【问题标题】:django.db.utils.IntegrityError: NOT NULL constraint failed: app_users.key_value_iddjango.db.utils.IntegrityError:NOT NULL 约束失败:app_users.key_value_id
【发布时间】:2022-06-23 03:03:01
【问题描述】:

这里我有两个模型 Keys 和 Users 我正在创建 POST API,所以我遇到了这个错误

UserModel.py

class Users(AbstractBaseUser):
       vendor_name = models.ForeignKey(Vendor, on_delete=models.CASCADE, default=None)
       key_value = models.ForeignKey(KeyTable, on_delete=models.CASCADE, default=None, null=True)
       username = models.CharField(max_length=100, verbose_name="username", unique=True)
       password = models.CharField(max_length=100)
       hardware_id = models.CharField(max_length=150, null=True)
       created_by = models.DateField(verbose_name="created_by", auto_now_add=True)

       USERNAME_FIELD = "username"
       REQUIRED_FIELDS = ['password', 'hardware_id']

       is_active = models.BooleanField(default=True)
       is_admin = models.BooleanField(default=False)
       is_role_vendor = models.BooleanField(default=False)
       is_role_customer = models.BooleanField(default=True)

       def __str__(self):
             return self.username

       objects = UserManager()

KeyModel.py 存储密钥的地方

class KeyTable(models.Model):
      key_id = models.IntegerField(unique=True, auto_created=True)
      key_value = models.CharField(max_length=100)
      issue_date = models.DateField(max_length=100)
      expiry_date = models.DateField()
      status = models.CharField(max_length=50)
      license_tenure = models.IntegerField()

      def __str__(self):
          return self.key_value

密钥序列化器

class KeySerializer(serializers.ModelSerializer):
    class Meta:
         model: Keys
         fields = ['key_id', 'key_value', 'issue_date', 'expiry_date', 'status', 'license_tenure']

错误遭遇:

django.db.utils.IntegrityError: NOT NULL constraint failed: app_users.key_value_id

需要帮助我解决此错误,我将不胜感激,谢谢

【问题讨论】:

  • 请显示完整的回溯。

标签: python django django-rest-framework


【解决方案1】:

您可以在导致错误的模型字段中设置null=Trueblank=True 或者你可以删除应用程序并使用同样的代码重新创建它,这个技巧也可以工作。

但如果你没有找到解决方案,那么你可以找到几个解决方案here.

【讨论】:

    猜你喜欢
    • 2020-06-08
    • 2020-07-04
    • 2018-12-24
    • 2021-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多