用户可以列出他的财产,他/她将能够编辑该列表。
问题
在编辑时,所有其他字段将显示用户已保存的数据,并且只有amenities
字段不会显示“已选择的值”。
amenities
字段的所有值都保存在TextField中,用户可以通过“CheckboxSelectMultiple”小部件选择多个项目。
模型
class Motel(models.Model):
user= models.ForeignKey(User)
name= models.CharField(max_length=100, verbose_name='Name')
amenities= models.TextField()
我在表单字段小部件中添加了“已选中”,但它只会检查所有项目。
class MotelForm(forms.ModelForm):
amenities = forms.MultipleChoiceField(choices=FACILITY_CHOICES, required= False, widget=forms.CheckboxSelectMultiple(attrs={'checked':'checked'}))
浏览
@login_required
def edit_motel_details(request, motel_id, slug):
if id:
motel= Motel.objects.get(id=motel_id, slug=slug)
else:
motel= motel()
motel_form= MotelForm(instance=motel)
MotelImagesInlineFormSet= inlineformset_factory(Motel, MotelImages, fields=('image',))
formset= MotelImagesInlineFormSet(instance=motel)
if request.method== "POST":
motel_form= MotelForm(request.POST, request.FILES)
if id:
motel_form= MotelForm(request.POST, request.FILES, instance=motel)
formset= MotelImagesInlineFormSet(request.POST, request.FILES, instance=motel)
if motel_form.is_valid():
created_motel= motel_form.save(commit=False)
formset=MotelImagesInlineFormSet(request.POST, request.FILES, instance=created_motel)
if formset.is_valid():
created_motel.save()
formset.save()
redirect_url=reverse('listed')
return HttpResponseRedirect(redirect_url)
return render(request, 'm/m_edit.html', {'motel_form': motel_form,'formset':formset,})
我想在“编辑表单”中显示用户已选择/保存的项目。我错过了什么?
答案 0 :(得分:0)
Meta
MotelForm
fields
class MotelForm(forms.ModelForm):
amenities = forms.MultipleChoiceField(choices=FACILITY_CHOICES, required=False, widget=forms.CheckboxSelectMultiple())
class Meta:
model = Motel
fields = ['name', 'amenities', ...]
添加{{1}}中的设施。
{{1}}
现在,当您传递实例时,它应该加载已经选择的值。