【发布时间】:2013-02-22 17:58:36
【问题描述】:
我认为这最好用一些简单的模型代码来解释(我是从头开始编写的,所以可能存在语法问题 - 这里不重要):
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 等。关键是它可以从管理员那里编辑,所以我或客户都不需要爬过数据,但它是有限的,所以用户只能选择每个统计数据中的一个(你可以' t 定义“颜色”两次)。
所以我现在正在尝试为此编写数据输入表单,并且我想要一个可以放在页面上的可选 ModelForm 列表。我有最简单的 ModelForm:
class StatisticForm(forms.ModelForm):
class Meta:
model = Statistic
棘手的部分(在我的脑海中)是为每个 StatisticType 生成此 ModelForm 的实例,而不管它是否存在。也就是说,如果 Car 对象没有分配颜色,则表单仍会显示。类似地,如果是这样,则该 Statistic 实例将加载到 ModelForm 中。
在我看来,无论是否存在任何给定 Statistic 的预先存在的实例,我如何生成这些事物的列表?
这似乎应该是一件简单得愚蠢的事情,但周五已经很晚了,一切看起来都很糟糕。
【问题讨论】:
-
内联模型工厂无法满足您的需求?
-
@Brandon 我已经做 Django 几年了,从来没有听说过“内联模型工厂”这个词!如果您认为这就是问题(而且听起来确实很可疑),请根据我的示例将其写为答案并附上示例,您将获得很多积分!
-
对不起,我说的是“表单集工厂”,不过,使用工厂模式来生成表单实例也不难。
标签: django django-models django-forms