Django rest framework 从CreateAPIView中的kwargs指定外键对象
我有一个PartListing模型,它有一个外键Org。我想让我的post请求根据url中的组织自动将该组织添加到列表中。我不知道如何设置save以提供Org对象,而不是QuerySet或Org\u idDjango rest framework 从CreateAPIView中的kwargs指定外键对象,django-rest-framework,Django Rest Framework,我有一个PartListing模型,它有一个外键Org。我想让我的post请求根据url中的组织自动将该组织添加到列表中。我不知道如何设置save以提供Org对象,而不是QuerySet或Org\u id class Org(BaseModel): name = models.CharField(max_length=200) class PartListing(BaseModel): org = models.ForeignKey(Org, on_delete=models.
class Org(BaseModel):
name = models.CharField(max_length=200)
class PartListing(BaseModel):
org = models.ForeignKey(Org, on_delete=models.CASCADE,
related_name="part_listing")
我的序列化程序:
class OrgSerializer(serializers.ModelSerializer):
class Meta:
model = Org
fields = (
'name'
)
class PartListingSerializer(serializers.ModelSerializer):
many = True
org = OrgSerializer(read_only=True)
class Meta:
model = PartListing
fields = (
'org'
)
我的url模式有以下特点:
path('org/<int:org_id>/listing', views.PartListingCreateView.as_view(),
name='listing_add')
这给了我一个错误
Cannot assign "OrgSerializer(<QuerySet [<Org: Test Acme Corp>]>, many=True):
uuid = UUIDField(read_only=True)
name = CharField(max_length=200)
primary_user = PrimaryKeyRelatedField(allow_null=True, queryset=User.objects.all(), required=False)": "PartListing.org" must be a "Org" instance.
无法分配“OrgSerializer(,many=True):
uuid=UUIDField(只读=True)
name=CharField(最大长度=200)
primary_user=PrimaryKeyRelatedField(allow_null=True,queryset=user.objects.all(),required=False)”:“PartListing.org”必须是“org”实例。
到目前为止,我已经尝试了以下方法:
- 保存“组织”-相同错误
- 保存“组织id”-相同错误
- 向ListingSerializer添加了相关的部件序列化程序(这不会更改错误)
有什么想法吗?想出来了!由于queryset在定义上只是一个项,因此我在save部分添加了org.first()
org_id = self.kwargs['org_id']
org = Org.objects.filter(id=org_id)
serializer.save(org=org.first())
org_id = self.kwargs['org_id']
org = Org.objects.filter(id=org_id)
serializer.save(org=org.first())