2011-09-15 101 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模型中)。我想我有一個解決方案,我會發布,如果它的工作。 –

相關問題