部品の「注文」フォームを作成しています。
私AddOrderForm
にはOrder
モデル フィールド ( などquantity
) がありますが、同時に、Part
モデル ( などname_in_english
) とPartNumber
モデル ( など) からのパーツ関連の情報number
と、その他のフィールドがいくつかあります...
まず、それぞれを個別ModelForm
に実行し、次のように組み合わせました。
フォーム.py
class PartNumberForAddOrderForm(forms.ModelForm):
class Meta:
model = PartNumber
fields = ('number',)
class PartForAddOrderForm(forms.ModelForm):
class Meta:
model = Part
fields = ('manufacturer','name_in_english')
class AddOrderForm(forms.ModelForm):
class Meta:
model = Order
fields = ('quantity',)
テンプレート内:
<form class="form-inline well" id="add_order">
<div class="row-fluid">
<div class="span12">
{% crispy form_part_number %}
{% crispy form_part %}
{% crispy form_order %}
<input type="submit" class="btn btn-primary pull-right" value="{% trans 'Add' %}"/>
</div>
</div>
</form>
このビューで次のようになりました。
form_part_number.is_valid() and form_part.is_valid() and form_order.is_valid():
これはすべて非常に醜く、間違っているように見えます...
だから私は別の方法で作成しました:
class PartForm(forms.ModelForm):
class Meta:
model = Part
fields = ('manufacturer','name_in_english')
class PartNumberForm(forms.ModelForm):
class Meta:
model = PartNumber
fields = ('number',)
class AddOrderForm(forms.ModelForm):
manufacturer = PartForm.base_fields['manufacturer']
name_in_english = PartForm.base_fields['name_in_english']
number = PartNumber.base_fields['number']
class Meta:
model = Order
fields = ('manufacturer','number','quantity','name_in_english')
質問: これはForm.base_fields['']
合法的な方法ですか? .save()
うまくいかないと思い.is_valid()
ますが、うまくいくはずですよね?それを行うより良い方法はありますか?
私はどこでも役立つものを何でも見つけることができるので、これは私が自分で思いついたものです. それは私を心配しています。
ありがとう