为澄清起见而编辑:
我正在尝试在Django中创建查找表,但不确定如何实现。我有两个桌子,一个桌子有“花的钱”,第二个桌子有“免费礼物”。您花费一定的金额,就会得到更多(一对多)的免费礼物。
例如下面的图片,如果您花费 $ 50 ,您将获得冰淇淋和苏打作为免费礼物。在较低级别,您将只获得一份免费礼物。
我创建了此模型,但是运行迁移不喜欢它。
class GiftDefaults(models.Model):
"""
Default gifts associated with spending levels
"""
# Fields
gift = models.ForeignKey(Gift, null=True, blank=True,on_delete=models.CASCADE),
spending_level = models.ForeignKey(SpendingLevel, null=True, blank=True,on_delete=models.CASCADE)
def __str__(self):
return self.gift
在Django模型中创建此查找表的正确方法是什么?不知道我的模型怎么了。
这是makemigrations的输出,您可以看到它跳过了“礼物”列。
operations = [
migrations.CreateModel(
name='GiftDefaults',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('spending_level', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='giving.SpendingLevel')),
],
),
]
答案 0 :(得分:0)
问题是gift
列创建结束时的逗号,使代码分成我怀疑的元组。正确的代码应该是
class GiftDefaults(models.Model):
"""
Default gifts associated with spending levels
"""
# Fields
gift = models.ForeignKey(Gift, null=True, blank=True,on_delete=models.CASCADE)
spending_level = models.ForeignKey(SpendingLevel, null=True, blank=True,on_delete=models.CASCADE)
def __str__(self):
return self.gift
将其删除后,Makemigrations
会按预期工作。