![](/img/trans.png)
[英]Integrity error in django foreign key field in django-rest-framework
[英]django-rest-framework- accepting id for submitted foreign key field
我有以下型號:
class Parent(models.Model):
name = models.CharField()
class Child(models.Model):
name = models.CharField()
parent = models.ForeignKey(Parent, on_delete=models.CASCADE)
使用序列化器:
class ChildSerializer(serializers.ModelSerializer):
class Meta:
model = Child
fields = ('id', 'name', 'parent',)
read_only_fields = ('id',)
和模型視圖集:
class ChildViewSet(viewsets.ModelViewSet):
serializer_class = ChildSerializer
permission_classes = (IsAuthenticated,)
queryset = Child.objects.all()
paginator = None
如果我查詢 api,我會得到一個如下所示的 json 結構:
{
"id": 1,
"name": "Child Name",
"parent": 3
}
這正是我想要的。 但是,如果我嘗試將相同的數據放回去,我會收到錯誤: ValueError: Cannot assign "3": "Child.parent" must be a "Parent" instance.
我怎樣才能提交這樣的作品? 我應該能夠以與從 API 接收數據相同的方式提交我的數據。
您可以使用PrimaryKeyRelatedField
:
DRF 文檔中的示例:
class AlbumSerializer(serializers.ModelSerializer):
tracks = serializers.PrimaryKeyRelatedField(many=True, read_only=True)
class Meta:
model = Album
fields = ['album_name', 'artist', 'tracks']
您的代碼很可能是:
class ChildSerializer(serializers.ModelSerializer):
parent = serializers.PrimaryKeyRelatedField(many=True)
class Meta:
model = Child
fields = ('id', 'name', 'parent',)
read_only_fields = ('id',)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.