Django rest framework 从CreateAPIView中的kwargs指定外键对象

Django 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.

我有一个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.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())