簡體   English   中英

通過視圖集創建時如何將當前用戶添加到多對多字段?

[英]How to add the current user to a many-to-many field when creating via a viewset?

我有一個 Django 項目,它具有“工作區”,用戶可以屬於多個工作區,因此用戶和工作區之間存在多對多的關系。

現在,到目前為止,其他一切工作正常,但是當用戶創建該工作區時,我無法將當前用戶添加到工作區的用戶列表中。

model 看起來像這樣:

class Workspace(models.Model):
    name = models.CharField(max_length=100)
    users = models.ManyToManyField(User, related_name='workspaces')

序列化程序如下所示:

class WorkspaceSerializer(serializers.ModelSerializer):
    class Meta:
        model = Workspace
        fields = ('name', 'users')

最后,觀點:

class WorkspaceViewSet(viewsets.ModelViewSet):
    queryset = Workspace.objects.all().order_by('name')
    serializer_class = WorkspaceSerializer
    permission_classes = [permissions.IsAuthenticated,]

因此,詳細說明,當用戶創建新工作區時,我希望工作區的users字段引用該用戶。 目前,該字段仍為空。 我將如何填充該字段,以便在創建時將當前用戶添加到那里?

您可以覆蓋序列化程序 class 的create方法:

class WorkspaceSerializer(serializers.ModelSerializer):
    # ...

    def create(self, validated_data):
        instance = super(WorkspaceSerializer, self).create(validated_data)
        instance.users.add(self.context['request'].user)
        return instance

請注意,您可以通過context屬性訪問序列化程序中的請求。 這是由相應的視圖( source )傳入的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM