【发布时间】:2013-08-28 23:04:42
【问题描述】:
我有一个 Item 对象,它与另一个对象 Option 具有多对多关系。我像这样从 Item 对象创建一个模型表单;
class Item(models.Model):
category = models.ForeignKey(Category)
name = models.CharField(max_length=200)
price = models.DecimalField(max_digits=9, decimal_places=2, blank=True, null=True)
options = models.ManyToManyField(Option)
class OptionForm(ModelForm):
options = forms.ChoiceField(widget=forms.RadioSelect())
class Meta:
model = Item
fields = ( 'options', )
当我在模板中呈现表单时,它会呈现所有可用的options Item 对象(预期行为),即使那些不是由特定项目创建的。我希望能够加载由用户选择的特定项目定义的options。我如何覆盖表单以实现这种行为。例如,如果没有表单,我可以通过其 id 呈现 Items 自己的 Options。 item = Item.objects.get(pk=id)
【问题讨论】:
-
你能澄清你的问题吗?您想动态实现用户想要的选项定义的表单吗?还是仅将用户定义的特定选项集放入模型中?
-
我认为这个问题很好@agconti,在创建项目时,我还指定了属于该项目的
options。 -
为什么要限制选项?
-
举个例子,像咖啡这样的项目可能有大小等选项,而墨西哥卷饼等项目可能有牛排或鸡肉等选项。当我渲染表单时,它会渲染所有选项,这意味着咖啡会有大、小、牛排和鸡肉等选项,这是不对的。
-
看看这里:stackoverflow.com/questions/9743103/…。也许这会导致正确的方向。
标签: django django-forms