我认为最好用一些简单的模型代码来解释这一点(我是从头开始写的,所以可能存在语法问题——这里不重要):
class Car(models.Model)
make = models.CharField(...)
model = models.CharField(...)
class StatisticType(models.Model):
name = models.CharField(...)
class Statistic(models.Model)
car = models.ForeignKey('Car')
stype = models.ForeignKey('StatisticType')
data = models.CharField(...)
class Meta:
unique_together = (('car', 'stype'),)
我们有一辆带有一些硬编码统计数据的汽车,我们有一些数据库控制的统计数据。我可能会添加Colours
,Wheel Size
等。关键是它可以从管理员编辑,所以我或客户都不需要爬过数据,但它是有限的,所以用户只能选择每个统计数据中的一个(你不能定义“颜色”两次)。
所以我现在正在尝试为此编写数据输入表单,并且我想要一个可以放在页面上的可选模型表单列表。我有最简单的 ModelForm 可能:
class StatisticForm(forms.ModelForm):
class Meta:
model = Statistic
棘手的部分(在我的脑海中)是为每个 StatisticType 生成这个 ModelForm 的实例,不管它是否存在。也就是说,如果 Car 对象没有分配颜色,则表单仍会显示。类似地,如果是这样,则该 Statistic 实例将加载到 ModelForm 中。
在我看来,无论是否存在任何给定统计数据的预先存在的实例,我如何生成这些事物的列表?
这似乎应该是一件简单得愚蠢的事情,但周五已经很晚了,一切看起来都很糟糕。