2011-09-15 75 views
0

我目前有两个Django模型,就像一个设置模型,另一个是该模型的实际数据。就像这样:如何制作基于另一个模型的模型formset

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) 

我一直在试图使被链接起来的Extra的queryset的,我已经过滤掉了OrderExtra的表单集。然后隐藏Extra的未选中框的字段。

我虽然有关使形式为Extra和创作更换领域,但我不知道如何正确地做到这一点...

如果有人可以帮助我,或提供一些方向会太棒了,因为我被困在如何做到这一点...

干杯。

回答

0

尽量使形式OrderExtra和初始化它加检查从相关的额外对象字段

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

+0

我真的不知道,如果它这样做也正是你想要的 – szaman

+1

这可能是作者的意思,但是如果我们处理一个没有声明关系到任何额外实例的新表单,那么你的代码将会抛出异常。 – WTK

+0

嘿,谢谢你的尝试,这不是我正在寻找的东西,我一直在寻找orderExtraForm的字段,根据Extra模型的查询集显示(即OrderExtra文本字段将显示如果has_text存在于Extra模型中)。我想我有一个解决方案,我会发布,如果它的工作。 –

相关问题