如何基于另一个模型创建模型表单集

时间:2011-09-15 02:28:41

标签: django django-models django-forms

我目前有两个Django模型,就像一个设置模型,另一个是该模型的实际数据。像这样:

class Extra(models.Model):
    has_text = models.BooleanField(u'Has Text', default=False)
    has_image = models.BooleanField(u'Has Image', default=False)
    has_file = models.BooleanField(u'Has File', default=False)


class OrderExtra(models.Model):
    extra = models.ForeignKey('Extra')
    image = models.ImageField(upload_to=get_order_extra_upload_path, blank=True, null=True)
    file = models.FileField(upload_to=get_order_extra_upload_path, blank=True, null=True)
    text = models.TextField(blank=True, null=True)
    comments = models.TextField(blank=True, null=True)

我一直在努力制作一个OrderExtra的formset,它与我已过滤掉的Extra的查询集相关联。然后隐藏Extra的未选中框的字段。

我虽然为Extra创建了一个表单并替换了创建中的字段,但我不确定如何正确地执行此操作...

如果有人可以帮助我,或提供一些非常棒的方向,因为我一直坚持如何做到这一点......

干杯。

1 个答案:

答案 0 :(得分:0)

尝试为OrderExtra创建表单,并在 init 中添加相关额外对象的已检查字段

class MyForm(forms.ModelForm):
    has_text = None

    class Meta():
        model=OrderExtra

    def __init__(self, *args , **kwargs):
        super(MyForm, self).__init__(*args , **kwargs)
        if self.instance and self.instance.extra.has_text:
            self.has_text = forms.BooleanField(...)

您也可以为has_image和has_file

执行此操作