[英]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.