本文介绍了从表单数据更新Django中的ManyToManyField的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在传递这样的形式:
I am passing form like this:
guest = get_object_or_404(Guest, id=guest_id)
data = {'full_name': guest.full_name, 'street_address': guest.street_address,
'city': guest.city, 'state': guest.state, 'zip_code': guest.zip_code,
'guests': guest.guests, 'children': guest.children,'email': guest.email,
'phone_number': guest.phone_number, 'gift_description': guest.gift_description,
'status': guest.status.all()}
form = GuestForm(initial=data)
像这样通过帖子获取表单数据:
Getting form data via post like this:
form = GuestForm(request.POST)
if form.is_valid():
full_name = form.cleaned_data['full_name']
street_address = form.cleaned_data['street_address']
city = form.cleaned_data['city']
state = form.cleaned_data['state']
zip_code = form.cleaned_data['zip_code']
guests = form.cleaned_data['guests']
children = form.cleaned_data['children']
email = form.cleaned_data['email']
phone_number = form.cleaned_data['phone_number']
gift_description = form.cleaned_data['gift_description']
status = form.cleaned_data['status']
guest = Guest.objects.filter(id=guest_id).update(user=request.user,
full_name=full_name, street_address=street_address, city=city,
state=state, zip_code=zip_code, guests=guests, children=children,
email=email, phone_number=phone_number, gift_description=gift_description,
status=status) # The status is clearly not updated
我该怎么做?
编辑
class GuestForm(ModelForm):
status = forms.ModelMultipleChoiceField(
queryset=GuestStatus.objects.all().order_by('arrangement'),
widget=forms.CheckboxSelectMultiple, required=False)
class Meta:
model = Guest
exclude = ['user', 'invitation_date']
推荐答案
参考文档,当您使用modelForms时,不需要太多代码,您的代码将减少为:
With reference to modelForm documentation, when you are using modelForms you don't need so much of code, your code would reduce to:
guest = get_object_or_404(Guest, id=guest_id)
form = GuestForm(instance=guest)
再次发布,
#get the guest instance, if updating existing record
form = GuestForm(request.POST, instance=guest)
if form.is_valid():
new_guest = form.save(commit=False) #you want to set excluded fields
new_guest.user = request.user
#new_guest.invitation_date = somedate
new_guest.save()
form.save_m2m() #should do this if save(commit=False) used
这篇关于从表单数据更新Django中的ManyToManyField的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!