用戶將能夠列出他的財產,並且他/她將能夠編輯列表。選擇已編輯表單中的複選框值
的問題
在編輯,所有其他字段將顯示已經保存由用戶和只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,})
我想在「編輯」,用來顯示用戶已經選擇/保存項目。我錯過了什麼?
我不明白你的做法。 「TextField」是文本的一個塊,「MultipleChoiceField」是複選框的列表。你怎麼能假設一個複選框列表將被保存到一個文本塊? –
它保存。即使我把它放在CharField中,它仍然會保存。我不想繼續寫一個充滿了100個項目的模型,當我可以用一條線來完成並保存和檢索。它像這樣保存下來[u'Wireless Internet',u'Air Condition',u'Simming Pool',u'Television']。 Django沒有明確說明可以在現場保存的'唯一'數據。 – YoYo
這是我的觀點的一部分。你將選擇保存爲字符串,但沒有django文檔說django足夠聰明,可以將字符串恢復爲複選框列表。 –