Django Rest序列化程序外键是必需的错误

七哥

我试图让客户与电子邮件和电话建立一对多的关系。

class Client(models.Model):

class Email(models.Model):
    client = models.ForeignKey(Client, on_delete=models.CASCADE, related_name='emails')
    email = models.CharField(null=True, blank=True, max_length=50)

class Phone(models.Model):
    client = models.ForeignKey(Client, on_delete=models.CASCADE, related_name='phones')
    phone = models.CharField(null=True, blank=True, max_length=50)

这是我的序列化程序

class ClientSerializer(serializers.ModelSerializer):
    emails = EmailSerializer(required=False, allow_null=True, many=True)
    phones = PhoneSerializer(required=False, allow_null=True, many=True)

我无法确定为什么该帖子不会继续进行,因为它一直说需要客户端。

虽然我通过添加 read_only=True 让它工作,但即使我在 ClientSerializer 中定义了一个 def create(self,validated_data) 我也无法在 json 数据中获取电子邮件和电话数组。

这就是我在 views.py 中调用序列化程序的方式

serializer = ClientSerializer(data=request.data)

这是 json 数据的样子

{"id":0,"emails":[{"id":0,"emailType":"Home","email":"[email protected]"}],"phones":[],"name “:“我”}

所以我的目标是如果在 emails 数组中,如果有 email 属性,插入它,否则忽略。和手机一样。

这就是我在 views.py 中调用序列化程序的方式

@api_view('POST'])
def client(request):
    serializer = ClientSerializer(data=request.data)

    if serializer.is_valid():
        serializer.save()
        return Response(serializer.data, status=status.HTTP_200_OK)

所以在 ClientSerializer 中,我通过 Client.objects.create(validated_data); 创建了客户端对象。

然后从validated_data 中提取email 数组并执行for 循环。对于(在 emailData 中编辑):

Created an email = Email() object then
email.email = emailData.get('email')
email.client = client

但它给了我一个错误““client_id”列中的空值违反了非空约束”。当我执行打印(电子邮件)时,来自 email.client 的客户端对象为 null,这很奇怪,考虑到打印(客户端)有一个 id。

想法?

希戈尔·罗萨托

您正在序列化一个Client需要 FK的模型 ( )。如果您希望它支持空值,则应该在模型中执行以下操作:

client = models.ForeignKey(Client, on_delete=models.CASCADE, related_name='emails', null=True, blank=True)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Django rest 框架序列化程序外键

来自分类Dev

在保存Django-Rest-Framework序列化程序中包含外键

来自分类Dev

Django Rest Framework,外键字段的默认序列化程序

来自分类Dev

Django rest PUT 请求序列化程序无法使用外键更新模型

来自分类Dev

Django Rest框架多个外键序列化

来自分类Dev

django rest框架外键序列化器问题

来自分类Dev

django rest框架外键序列化

来自分类Dev

Django Rest Framework实例化序列化程序错误

来自分类Dev

Django REST Framework 序列化程序验证错误

来自分类Dev

在Django Rest Framework中,如何限制要序列化的外键对象的数量

来自分类Dev

Django rest-framework如何序列化对象/外键

来自分类Dev

Django rest IntegrityError:1048,外键序列化器上的“列不能为空”

来自分类Dev

可空外键字段 Django Rest Framework 的反序列化问题

来自分类Dev

Django DRF-将外键字段包含到序列化程序中

来自分类Dev

如何在 Django 序列化程序中获取外键 ID 而不是引用模型

来自分类Dev

Django - 通过带有外键引用的序列化程序创建一个实例

来自分类Dev

使用外键Django序列化模型

来自分类Dev

在Django GeoJSON序列化器中包含外键

来自分类Dev

django rest m2m 序列化程序抛出错误请求错误

来自分类Dev

Django Rest Framework序列化程序和Django表单

来自分类Dev

Django Rest框架在外键上的序列化

来自分类Dev

Django REST Framework:如何向使用穿透表的M2M序列化器添加外键?

来自分类Dev

django rest框架:通过序列化程序validate()方法设置字段级错误

来自分类Dev

Django Rest Framework序列化程序中的自定义错误消息

来自分类Dev

如何在Django Rest Framework序列化程序中捕获SQL错误?

来自分类Dev

Django序列化程序与rest_framework序列化程序

来自分类Dev

序列化程序,Django rest框架中的权限检查,

来自分类Dev

Django Rest Framework嵌套的序列化程序部分更新

来自分类Dev

Django Rest Framework更新嵌套序列化程序

Related 相关文章

  1. 1

    Django rest 框架序列化程序外键

  2. 2

    在保存Django-Rest-Framework序列化程序中包含外键

  3. 3

    Django Rest Framework,外键字段的默认序列化程序

  4. 4

    Django rest PUT 请求序列化程序无法使用外键更新模型

  5. 5

    Django Rest框架多个外键序列化

  6. 6

    django rest框架外键序列化器问题

  7. 7

    django rest框架外键序列化

  8. 8

    Django Rest Framework实例化序列化程序错误

  9. 9

    Django REST Framework 序列化程序验证错误

  10. 10

    在Django Rest Framework中,如何限制要序列化的外键对象的数量

  11. 11

    Django rest-framework如何序列化对象/外键

  12. 12

    Django rest IntegrityError:1048,外键序列化器上的“列不能为空”

  13. 13

    可空外键字段 Django Rest Framework 的反序列化问题

  14. 14

    Django DRF-将外键字段包含到序列化程序中

  15. 15

    如何在 Django 序列化程序中获取外键 ID 而不是引用模型

  16. 16

    Django - 通过带有外键引用的序列化程序创建一个实例

  17. 17

    使用外键Django序列化模型

  18. 18

    在Django GeoJSON序列化器中包含外键

  19. 19

    django rest m2m 序列化程序抛出错误请求错误

  20. 20

    Django Rest Framework序列化程序和Django表单

  21. 21

    Django Rest框架在外键上的序列化

  22. 22

    Django REST Framework:如何向使用穿透表的M2M序列化器添加外键?

  23. 23

    django rest框架:通过序列化程序validate()方法设置字段级错误

  24. 24

    Django Rest Framework序列化程序中的自定义错误消息

  25. 25

    如何在Django Rest Framework序列化程序中捕获SQL错误?

  26. 26

    Django序列化程序与rest_framework序列化程序

  27. 27

    序列化程序,Django rest框架中的权限检查,

  28. 28

    Django Rest Framework嵌套的序列化程序部分更新

  29. 29

    Django Rest Framework更新嵌套序列化程序

热门标签

归档