2011-09-15 8 views
0

現在、2つのDjangoモデルがあり、セットアップモデルのように、もう1つはそのモデルの実際のデータです。このように:他のモデルに基づいてモデルフォームセットを作るにはどうすればいいですか

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のクエリセットまでリンクされているOrderExtraのフォームセットを作成しようとしてきました。その後、Extraのチェックされていないボックスのフィールドを非表示にします。

私も... Extraためのフォームを作成し、作成時にフィールドを置き換えるが、私はこれを適切に行う方法がわからない程度であった

誰も私を助けて、またはいくつかの方向性を提供することができれば

ことだろう私はこれを行う方法に立ち往生しているので、素晴らしいです...

乾杯。

答えて

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

+0

I'mためにも、これを行うことができますあなたが望む通りです – szaman

+1

これはおそらく著者の意図ですが、Extraインスタンスとの関係をまだ宣言していない新しいフォームを扱うと、あなたのコードは例外をスローします。 – WTK

+0

ちょっと、お試しいただきありがとうございます、これは私が探していたものではありませんが、私は、Extraモデルのクエリーセットに基づいて表示されるorderExtraFormのフィールドを探していました(つまり、OrderExtraテキストフィールドはif has_textはExtraモデルに存在します)。私は解決策があると思います。それが機能すれば投稿します。 –

関連する問題