Я работаю над секцией Django CS50 около 30-минутной отметки на видео с разделом режимов «ForeignKey».
Когда я запускаю make-миграцию, я получаю сообщение об ошибке.
Вы пытаетесь добавить ненулевое поле «агент» к продукту без значения по умолчанию; мы не можем этого сделать (базе данных нужно что-то для заполнения существующих строк).
Пожалуйста, выберите исправление:
1) Укажите одноразовое значение по умолчанию сейчас (будет установлено для всех существующих строки с нулевым значением для этого столбца)
2) Выйдите и позвольте мне добавить значение по умолчанию в models.py
Выберите параметр: 2
, если я установлю по умолчанию в виде строкового значения я получаю сообщение об ошибке, говоря, что ожидал идентификатор.
Если я установил его как 1, то получу следующее.
Строка в таблице 'clutter_product' с первичным ключом «1» имеет недопустимый внешний ключ: 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")