【问题标题】:OnetoOneRelatedField model details are not populating while trying to post details through APIVIew in Django Rest Framework尝试通过 Django Rest Framework 中的 APIVIew 发布详细信息时,未填充 OnetoOneRelatedField 模型详细信息
【发布时间】:2020-10-21 14:12:22
【问题描述】:

models.py

class Address(models.Model):
    name=models.CharField(max_length=100,default='')
    place=models.CharField(max_length=100,default='')



class wish(models.Model):
      created=models.DateField(auto_now_add=True)
      title=models.CharField(default='',null=True,blank=True,max_length=100)
      wishtext=models.CharField(max_length=1000)
      address=models.OneToOneField(Address,null=True,on_delete=models.CASCADE,)

serializers.py 文件。

      class WishSerializer(serializers.ModelSerializer):
          class Meta:
            model = wish
            fields = ['id','title','wishtext','address']
            depth=1

views.py

         class WishList(generics.ListCreateAPIView):
         #permission_classes = [permissions.IsAuthenticated]
         queryset=wish.objects.all()
         serializer_class = WishSerializer

注意:

我能够获取所有详细信息,包括地址模型详细信息。 但是当我尝试发布详细信息时,只能看到希望模型字段而不是地址对象下拉字段。 请帮我解决这个问题?

【问题讨论】:

    标签: python django django-rest-framework


    【解决方案1】:

    您可以通过在 ModelSerializer 中覆盖 create 方法来实现此类行为 并将您的创建逻辑放在那里。

    实际上在 Writable Nested Serializers 部分的DRF Documentation 中提到过。,那里有一个很好的例子。

    【讨论】:

    • 实际上,我已经从 WishSerializer 类中删除了 depth=1,然后能够看到下拉列表。我认为另一种方法是覆盖 create 方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-09
    • 2016-01-27
    • 1970-01-01
    相关资源
    最近更新 更多