【发布时间】:2020-07-24 20:49:59
【问题描述】:
我正在使用模式“ForeignKey”部分的视频中的 30 分钟左右制作 CS50 的 Django 部分。
当我运行 make 迁移时,我得到了错误。
您正在尝试在没有默认值的情况下向产品添加不可为空的字段“代理”;我们不能这样做(数据库需要一些东西来填充现有的行)。
请选择一个修复:
1) 现在提供一次性默认值(将在所有现有行上设置此列的空值)
2) 退出,让我在 models.py 中添加一个默认值
选择一个选项:2
如果我将默认值设置为字符串值,我会收到错误消息,说它需要一个 id。
如果我将其设置为 1,那么我会得到以下结果。
主键为“1”的表“clutter_product”中的行具有无效的外键:clutter_product.agent_id 包含的值“1”在 clutter_supplier.id 中没有对应的值。
class Supplier(models.Model):
company = models.CharField(max_length=64)
contact = models.CharField(max_length=64)
email = models.CharField(max_length=128, blank = True)
def __str__(self):
return f"{self.id} {self.company} {self.contact} {self.email}"
class Product(models.Model):
name = models.CharField(max_length=64)
sku = models.CharField(max_length=64, blank = True)
unit_cost = models.IntegerField()
rrp = models.IntegerField()
average_fee = models.IntegerField()
shipping_fee = models.IntegerField()
agent = models.ForeignKey(Supplier, default=1, on_delete=models.CASCADE, related_name="suppliers")
【问题讨论】:
标签: django foreign-keys cs50