I'm creating the "Order" form for the Parts.
My AddOrderForm has Order Model fields (like quantity) but at the same time some Part-related info from Part Model (like name_in_english) and PartNumber Model (like number) and some other fields...
First I did Separate ModelForm for each one and them combined them like this:
forms.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',)
in template:
<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>
With this view became:
form_part_number.is_valid() and form_part.is_valid() and form_order.is_valid():
All this looks SUPER ugly and just wrong...
So I created the other way:
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')
QUESTIONS: Is this Form.base_fields[''] legal way? I assume the .save() will not work, but .is_valid() should be fine, right? Is there any better way to do it?
I could fine anything helpful anywhere so this is something I came up with myself. and that worries me.
Thanks