代码之家  ›  专栏  ›  技术社区  ›  copser

创建并保存对象IntegrityError django

  •  1
  • copser  · 技术社区  · 6 年前

    我从json响应中获取一个对象,我想使用 create 方法,以便将其保存到数据库中。

    response = requests.get(
                settings.BASE_URL,
                headers=headers,
                params=payload,
            )
            user_info = response.json()
    
            example_model = ExampleModel.objects.create(api_key=user_info.get('id'))
            example_model.save()
    

    模型是:

    class ExampleModel(models.Model):
        """
    
        """
        user = models.OneToOneField(User)
        example_id = models.CharField(max_length=225, blank=True, null=True)
        api_key = models.CharField(max_length=225, blank=True, null=True, validators=[validate_klean_token_syntax])
    

    接下来我会收到

    Exception Type: IntegrityError at /user-information/
    Exception Value: (1048, "Column 'user_id' cannot be null")
    

    有人能帮我理解为什么我会犯这个错误吗,谢谢。

    1 回复  |  直到 6 年前
        1
  •  2
  •   dfundako    6 年前

    您正试图将空值保存到模型中的字段,但它不能为空。ExampleModel中的用户字段与用户模型之间存在关系,并且模型定义不允许该字段为空。

    要么允许ExampleModel中的用户为空,不要使用像OneToOne这样的引用,要么确保get返回用户值。