如何在Django省下许多油田?
我有这样的模型:如何在Django省下许多油田?,django,django-orm,Django,Django Orm,我有这样的模型: class GuestStatus(models.Model): guest_status = models.CharField(max_length=200) arrangement = models.IntegerField(unique=True, help_text="Start from 1. Guest status will be arranged alphabetically.") class Guest(models.Model):
class GuestStatus(models.Model):
guest_status = models.CharField(max_length=200)
arrangement = models.IntegerField(unique=True, help_text="Start from 1. Guest status will be arranged alphabetically.")
class Guest(models.Model):
user = models.ForeignKey(User)
full_name = models.CharField(max_length=250)
status = models.ManyToManyField(GuestStatus, blank=True, null=True)
invitation_date = models.DateTimeField(blank=True, null=True)
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']
form = GuestForm(request.POST)
if form.is_valid():
status = form.cleaned_data['status']
guest.status = status
if status:
invitation_date = datetime.now()
else:
invitation_date = None
new_guest = form.save(commit=False)
new_guest.user = request.user
new_guest.save()
new_guest.status = status
form.save_m2m()
return HttpResponseRedirect('/list_guests/')
form = GuestForm(request.POST)
if form.is_valid():
if status:
invitation_date = datetime.now()
else:
invitation_date = None
new_guest = form.save(commit=False)
new_guest.user = request.user
new_guest.save()
status = form.cleaned_data['status']
for stat in status:
new_guest.status_set.create(guest_status = stat['guest_status'], arrangement = stat['arrangement'])
return HttpResponseRedirect('/list_guests/')
我希望ManyToManyField
显示为复选框。这就是为什么我要这样做:
class GuestStatus(models.Model):
guest_status = models.CharField(max_length=200)
arrangement = models.IntegerField(unique=True, help_text="Start from 1. Guest status will be arranged alphabetically.")
class Guest(models.Model):
user = models.ForeignKey(User)
full_name = models.CharField(max_length=250)
status = models.ManyToManyField(GuestStatus, blank=True, null=True)
invitation_date = models.DateTimeField(blank=True, null=True)
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']
form = GuestForm(request.POST)
if form.is_valid():
status = form.cleaned_data['status']
guest.status = status
if status:
invitation_date = datetime.now()
else:
invitation_date = None
new_guest = form.save(commit=False)
new_guest.user = request.user
new_guest.save()
new_guest.status = status
form.save_m2m()
return HttpResponseRedirect('/list_guests/')
form = GuestForm(request.POST)
if form.is_valid():
if status:
invitation_date = datetime.now()
else:
invitation_date = None
new_guest = form.save(commit=False)
new_guest.user = request.user
new_guest.save()
status = form.cleaned_data['status']
for stat in status:
new_guest.status_set.create(guest_status = stat['guest_status'], arrangement = stat['arrangement'])
return HttpResponseRedirect('/list_guests/')
我正试图这样保存表单:
class GuestStatus(models.Model):
guest_status = models.CharField(max_length=200)
arrangement = models.IntegerField(unique=True, help_text="Start from 1. Guest status will be arranged alphabetically.")
class Guest(models.Model):
user = models.ForeignKey(User)
full_name = models.CharField(max_length=250)
status = models.ManyToManyField(GuestStatus, blank=True, null=True)
invitation_date = models.DateTimeField(blank=True, null=True)
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']
form = GuestForm(request.POST)
if form.is_valid():
status = form.cleaned_data['status']
guest.status = status
if status:
invitation_date = datetime.now()
else:
invitation_date = None
new_guest = form.save(commit=False)
new_guest.user = request.user
new_guest.save()
new_guest.status = status
form.save_m2m()
return HttpResponseRedirect('/list_guests/')
form = GuestForm(request.POST)
if form.is_valid():
if status:
invitation_date = datetime.now()
else:
invitation_date = None
new_guest = form.save(commit=False)
new_guest.user = request.user
new_guest.save()
status = form.cleaned_data['status']
for stat in status:
new_guest.status_set.create(guest_status = stat['guest_status'], arrangement = stat['arrangement'])
return HttpResponseRedirect('/list_guests/')
表单正在保存所有数据,但不保存
状态
值。怎么了?另外,成功保存后,如何访问模板中的状态值?谢谢我会这样做:
class GuestStatus(models.Model):
guest_status = models.CharField(max_length=200)
arrangement = models.IntegerField(unique=True, help_text="Start from 1. Guest status will be arranged alphabetically.")
class Guest(models.Model):
user = models.ForeignKey(User)
full_name = models.CharField(max_length=250)
status = models.ManyToManyField(GuestStatus, blank=True, null=True)
invitation_date = models.DateTimeField(blank=True, null=True)
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']
form = GuestForm(request.POST)
if form.is_valid():
status = form.cleaned_data['status']
guest.status = status
if status:
invitation_date = datetime.now()
else:
invitation_date = None
new_guest = form.save(commit=False)
new_guest.user = request.user
new_guest.save()
new_guest.status = status
form.save_m2m()
return HttpResponseRedirect('/list_guests/')
form = GuestForm(request.POST)
if form.is_valid():
if status:
invitation_date = datetime.now()
else:
invitation_date = None
new_guest = form.save(commit=False)
new_guest.user = request.user
new_guest.save()
status = form.cleaned_data['status']
for stat in status:
new_guest.status_set.create(guest_status = stat['guest_status'], arrangement = stat['arrangement'])
return HttpResponseRedirect('/list_guests/')
获取new\u guest
实例后,创建GuestStatus
实例并将其绑定到new\u guest
如果GuestStatus
是您的字典,您可以:
for stat in status:
gs = GuestStatus.objects.get(pk = stat['guest_status'])
new_guest.status_set.add(gs)
希望你能理解我和我的英语:)因为你保存了
new\u guest.status=status
之后,如果我写new\u guest.status=status
之后new\u guest.user=request.user
之后再做new\u guest.save()
我得到这个错误:“需要为字段设置一个值”guest“在使用此多对多关系之前
如果表单具有状态
字段,则无需将其显式设置为新建\u guest.status=status
,而只需执行表单。保存\u m2m()
。已执行。仍不工作:(“Guest”对象在保存时没有属性“status\u set”
错误!您使用的是什么django版本?