簡體   English   中英

Django REST 框架:ManyToMany關系

[英]Django REST Framework : ManyToMany relationship

我目前正在研究 Django 項目,我是新手,很難找到關於此的明確文檔。

我的問題很簡單,我想在創建我的 model 時,通過多對多關系自動關聯另一個 model。

代碼如下:

Model:

class Favorite(models.Model):
    uuid = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    title = models.CharField(max_length=60, blank=False)
    estates = models.ManyToManyField(Estate, blank=True)

序列化器:

class FavoriteSerializer(serializers.ModelSerializer):
    estates = EstateSerializer(read_only=True, many=True)

    class Meta:
        model = Favorite
        fields = ['uuid', 'title', 'estates']

    def create(self, validated_data):
        instance = super(FavoriteSerializer, self).create(validated_data)
        instance.save()

        return instance

視圖集:

class MyFavoriteEstatesListViewSet(viewsets.ModelViewSet):
    serializer_class = FavoriteSerializer

    def get_queryset(self):
        return Favorite.objects.filter(users__id=self.request.user.id)

我目前正在通過 POST 發送這樣的內容:

{"title": "some title", "estate_uuid": "XXX"}

我只是想用我剛剛發送的 UUID 實例化我的 Estate model 並添加它

favorite.estates.add(estate)

我怎樣才能做到這一點?

謝謝你的幫助 !

我認為你可以嘗試這樣的事情:

class EstateField(serializers.RelatedField):
   def to_representation(self, obj):
       return EstateSerializer(obj).data

   def to_internal_value(self, data):
       return Estate.objects.get(pk=data)

class FavoriteSerializer(serializers.ModelSerializer):
    estates = EstateField(many=True, queryset=Estate.objects.all())

    class Meta:
        model = Favorite
        fields = ['uuid', 'title', 'estates']

我使用Custom Fields將數據表示為字典,但將輸入作為uuid

暫無
暫無

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

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