Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 选中复选框“编辑表单时已保存的值”_Python_Django_Django Models_Django Forms - Fatal编程技术网

Python 选中复选框“编辑表单时已保存的值”

Python 选中复选框“编辑表单时已保存的值”,python,django,django-models,django-forms,Python,Django,Django Models,Django Forms,用户将能够列出其财产,并且他/她将能够编辑列表 问题 编辑时,所有其他字段将显示用户已保存的数据,只有便利设施字段不会显示“已选择的值” 便利设施字段的所有值都保存在文本字段中,用户可以通过“CheckboxSelectMultiple”小部件选择多个项目 模型 class Motel(models.Model): user= models.ForeignKey(User) name= models.CharField(max_length=100, verbose_name='

用户将能够列出其财产,并且他/她将能够编辑列表

问题

编辑时,所有其他字段将显示用户已保存的数据,只有
便利设施
字段不会显示“已选择的值”

便利设施
字段的所有值都保存在文本字段中,用户可以通过“CheckboxSelectMultiple”小部件选择多个项目

模型

class Motel(models.Model):
    user= models.ForeignKey(User)
    name= models.CharField(max_length=100, verbose_name='Name')
    amenities= models.TextField()
我在表单字段小部件中添加了“checked”,但它只会检查所有项目

class MotelForm(forms.ModelForm):
    amenities = forms.MultipleChoiceField(choices=FACILITY_CHOICES, required= False, widget=forms.CheckboxSelectMultiple(attrs={'checked':'checked'}))
观点


我想在“编辑表单”中显示用户已选择/保存的项目。我缺少什么?

汽车表单的
字段中添加便利设施

class MotelForm(forms.ModelForm):
    amenities = forms.MultipleChoiceField(choices=FACILITY_CHOICES, required=False, widget=forms.CheckboxSelectMultiple())

    class Meta:
        model = Motel
        fields = ['name', 'amenities', ...]

现在,当您通过实例时,它应该加载已经选择的值。

我不理解您的方法
TextField
是一组文本,
multiplechicefield
是一组复选框。你怎么能假设一个复选框列表会被保存到一个文本块中呢。即使我把它放在一个CharField中,它仍然可以保存。我不想继续写一个充满100个项目的模型,而我可以用一行代码来保存和检索。它是这样保存的[你的无线互联网,你的空调,你的游泳池,你的电视]。Django没有明确说明可以保存在字段中的“唯一”数据。这是我的观点的一部分。您将选项保存为字符串,但没有django文档说django足够聪明,可以将字符串恢复到复选框列表中。这就是我来这里寻求建议的原因。我做了一个简单的研究,发现:我试过,但它不起作用。还是一样。这些字段是否与通过实例后加载名称之类的便利设施不同?是的。。除了康乐场地外,它们都工作得很好。
class MotelForm(forms.ModelForm):
    amenities = forms.MultipleChoiceField(choices=FACILITY_CHOICES, required=False, widget=forms.CheckboxSelectMultiple())

    class Meta:
        model = Motel
        fields = ['name', 'amenities', ...]