我有一個模板,顯示一個窗體與2個模型的數據。這兩個模型都包含一個名爲「name」的屬性。問題是,當我保存時,表單中「name」的錯誤值將保存爲appuser模型。我如何才能爲「名稱」字段的兩個表單中的每一個獲得正確的值?Django字段名稱衝突保存
視圖中看到(#ISSUE)
class FarmCreateView(CreateView):
template_name = 'directory/farm_registration.html'
model = Appuser
success_url = '/'
def get_context_data(self, **kwargs):
context = super(FarmCreateView, self).get_context_data(**kwargs)
context['farm'] = FarmForm()
context['appuser'] = FarmUserCreateForm()
return context
def post(self, request, *args, **kwargs):
farm_form = FarmForm(self.request.POST)
appuser_form = FarmUserCreateForm(self.request.POST)
if farm_form.is_valid() and appuser_form.is_valid():
# Save the appuser
new_user = appuser_form.save(commit=False)
new_user.name = appuser_form.cleaned_data.get('name')
# ISSUE I would expect the line above to return the name from the
# appuser_form, but instead it return the name from the farm_form
new_user.save()
# Save the farm
new_farm = farm_form.save(commit=False)
new_farm.appuser = new_user;
new_farm.save()
farm_form.save_m2m() # This is needed because we
# initially save with commit=false - it's just the way django works
# Log user in after registration
new_user_login = authenticate(email=request.POST['email'],
password=request.POST['password'])
login(request, new_user_login)
return HttpResponseRedirect('/')
else:
return render_to_response('directory/farm_registration.html', {'farm':
farm_form, 'appuser': appuser_form},
context_instance=RequestContext(request))
模板提取
<div class="pure-g">
<div class="pure-u-1-2 {{appuser.name.css_classes}}" style="margin-bottom: 20px;">{{appuser.name}}</div>
<div class="pure-u-1-2 {{appuser.surname.css_classes}}"><div style="float:right;">{{appuser.surname}}</div></div>
<div class="pure-u-1-2 {{appuser.email.css_classes}}" style="margin-bottom: 20px;">{{appuser.email}}</div>
<div class="pure-u-1-2 {{appuser.phone_number.css_classes}}"><div style="float:right;">{{appuser.phone_number}}</div></div>
<div class="pure-u-1-2 {{appuser.password.css_classes}}" style="margin-bottom: 20px;">{{appuser.password}}</div>
<div class="pure-u-1-2 {{appuser.password1.css_classes}}"><div style="float:right;">{{appuser.password1}}</div></div>
</div>
<!-- Farm Info -->
<div style="height:28px; position:relative; text-align:center; margin-bottom:10px; margin-left:1px; margin-right:1px">
<div class="page_section_strikethrough"></div>
<div class="page_section_heading" style="background:rgb(246,246,246)">FARM INFO</div>
</div>
<div class="pure-g">
<div class="pure-u-1-1 {{farm.name.css_classes}}" style="margin-bottom: 20px;">{{farm.name}}</div>
使用'prefix'的形式,這樣'上下文[ '農場'] = FarmForm(前綴= 「farm_form」)'和'FarmUserCreateForm(前綴='farm_user_create')' –
@AmitYadav謝謝,工作,如果你給你的評論作爲答案我會接受 – RunLoop
我很高興它的工作,現在你應該讀什麼前綴做到你的表格 –