我一直在寻找并试图让这个工作过去几个小时,我不能
我有一个从数据库中获取的技能列表:
forms.ModelMultipleChoiceField(
skills.objects.all(),
required=True,
widget=forms.CheckboxSelectMultiple(),
label='Check your skills.',
initial=skill_list.objects.filter(user='void'),
)
但这不起作用,因为我希望它能起作用。我基本上想要显示技能列表(所有这些)以及用户已经检查过的技能列表... pff我甚至无法解释正确。
用户选中复选框并点击另一页面中的提交后,我想显示所有技能以及用户选中要检查的技能。
假设我有a
b
c
并且用户检查b
并点击提交,当我在w / e页面中我要显示a
uncheked b
已选中c
未选中。
PS:如果我使用skills.objects.all()
,我会进入HTML value 1
,我该怎样才能这样做:
skills = (
('a', 'a'),
('b', 'b'),
)
而不是('1', 'a'), ('2', 'b')
。
答案 0 :(得分:2)
您的问题有点不清楚,但我仍然会尽力而为。
首先,
我想展示所有技能和一个 用户选中要检查...
表单无权访问用户,因此您需要将其传递给用户。您可以通过重载__init__
方法来完成此操作:
def __init__(self, **kwargs):
current_user = kwargs.pop ('user')
super(FormName, self).__init__(attrs)
然后设置最初选择的值
self.fields['skills'].initial = skill_list.objects.filter(user='void')
请记住,必须在调用基类的构造函数后执行此操作。
最后,
PS:如果我使用skills.objects.all()我 得到html值1和怎么样 我把它作为
技能=( ('a','a'), ('b','b'), )
而不是('1','a'),('2','b')
你为什么要那样做?数字是您'技能'表中行的主键。 Django使用它来建立适当的关系。