我在同一頁上有兩個模型表單。形式僅具有單一字段,event
被選擇: forms.py在同一頁面上的兩個django模型框架,相同的模型,沒有Formset
class RegistrationForm(forms.ModelForm):
class Meta:
model = Registration
fields = ['event']
views.py
form1 = RegistrationForm(request.POST or None, instance=user_reg1)
form2 = RegistrationForm(request.POST or None, instance=user_reg2)
if request.method == 'POST':
if form1.is_valid() and form2.is_valid():
form1.save()
form2.save()
的.html
<form method="POST" action=""> {% csrf_token %}
{{ form1 }}
{{ form2 }}
<input type="submit" value="Save Selections"/>
</form>
的表格顯示和填充親perly,但是當我更改這些值並點擊保存按鈕時,它總是將form2選擇保存到兩個實例中。
我注意到的是,DOM ID是一樣的,我已經能夠通過抓住在註冊模式獨特的領域,以改變DOM ID(在這種情況下,block
)
形式。 PY
class RegistrationForm(forms.ModelForm):
class Meta:
model = Registration
fields = ['event']
def __init__(self, *args, **kwargs):
block = kwargs.pop('block') # a unique field in the Registration model
super(RegistrationForm, self).__init__(*args, **kwargs)
if block:
DOM_id = "event-" + str(block)
self.fields['event'].widget.attrs.update({'id': DOM_id, })
這是給該領域唯一的ID,但是這兩種形式都仍然使用相同ID的DIV包含:div_id_event
仁德紅色的HTML
<form method="POST" action=""> <input type='hidden' name='csrfmiddlewaretoken' value='...' />
<div id="div_id_event" class="form-group">
<label for="event-Flex-1" class="control-label requiredField">Event<span class="asteriskField">*</span> </label>
<div class="controls ">
<select class="select form-control" id="event-Flex-1" name="event" required>
<option value="">---------</option>
<option value="10">stuff</option>
...
</select>
</div>
</div>
<div id="div_id_event" class="form-group">
<label for="event-Flex-2" class="control-label requiredField">
Event<span class="asteriskField">*</span> </label>
<div class="controls ">
<select class="select form-control" id="event-Flex-2" name="event" required>
<option value="">---------</option>
<option value="10">stuff</option>
....
</select>
</div>
</div>
<input type="submit" value="Save Selections"/>
</form>
我甚至不知道id是否很重要。我有沒有辦法讓這兩個表單合作而不使用Formset?