即使我看了其他有这个问题的人,我也无法解决我的问题。
如何使用外键创建id?我该如何使用id?
这是我的代码:
class Receipt(models.Model):
amount = models.DecimalField(max_digits=5, decimal_places=2, primary_key=True)
vat = models.DecimalField(max_digits=5, decimal_places=2)
total_amount = models.IntegerField(default=0)
class ReceiptItem(models.Model):
receipt_id = models.ForeignKey('Receipt', on_delete=models.CASCADE)
product_id = models.ForeignKey('Product', on_delete=models.CASCADE)
amount = models.DecimalField(max_digits=5, decimal_places=2)
vat = models.DecimalField(max_digits=5, decimal_places=2)
vat_rate = models.DecimalField(max_digits=5, decimal_places=2)
sub_total = models.IntegerField(default=0)
name = models.CharField(max_length=200)
class Product(models.Model):
name = models.CharField(max_length=5)
vat_rate = models.DecimalField(max_digits=5, decimal_places=2)
amount = models.IntegerField(default=0, primary_key=True)
这是我得到的错误:
django.db.utils.IntegrityError: UNIQUE constraint failed: migros_product.amount
答案 0 :(得分:2)
class Product(models.Model):
name = models.CharField(max_length=5)
vat_rate = models.DecimalField(max_digits=5, decimal_places=2)
amount = models.IntegerField(default=0, primary_key=True)
金额设置为primary key
,这意味着数据库每个金额值只允许1条记录。
但是,您还设置了default
值为0,因此只要未提供金额值,您的数据库只能创建金额为0的1条记录。
你必须决定你想要什么。如果金额唯一性很重要,那么删除default = 0并将null = True,blank = True,例如。