我想在表单中的Queryset中显示多个值,但无法获取值。
我试图使用forms.locations.all
并循环播放它们。
forms.locations.1
看起来会起作用,但是
forms.locations.1.name forms.locations.1.street
也无效。
有没有办法在表单中显示更多的查询集的名称?
我知道这是一个Field。我正在尝试在Admin Dashboard功能中复制一些内容。 我有多个未知数量的选择。并且需要能够将这些选择添加到多个到多个字段中。这已经有效,但只有查询集项的名称显示在表单中,这是一个问题。有些具有相同的名称,依此类推。我需要在管理员内部显示类似字段= ['name','street','street_number','postal_code','city']。
有人有任何想法吗?
forms.py
class GroupCreateForm(forms.ModelForm):
locations = forms.ModelMultipleChoiceField(label='',widget=forms.CheckboxSelectMultiple(attrs={'class': 'styled', "style":"margin:10px;"}), queryset=None)
group_name = forms.CharField(label='', required=True ,widget=forms.TextInput(attrs={'rows': '1', 'class': 'form-control', 'placeholder': 'Geben Sie den Gruppen Namen an'}))
def __init__(self, user, *args, **kwargs):
super(GroupCreateForm, self).__init__(*args, **kwargs)
self.fields['locations'].queryset = LocationData.objects.all().filter(email=user.email)
class Meta:
model = GroupManagement
fields = ['group_name', 'locations']
views.py
def page_groups(request, page_group):
form = GroupCreateForm(data=request.POST or None, user=request.user)
if request.method == 'POST':
if form.is_valid():
group_instance = form.save(commit=False)
group_name = form.cleaned_data['group_name']
group_id = group_name.replace(' ', '')
group_instance.group_id = group_id
group_instance.email = request.user.email
group_instance.save()
form.save_m2m()
context = {
'form': form,
}
return render(request, 'dashboard/create_group.html', context)
views.py
<div class="col-md-12">
<div class="panel">
<div class="panel-body">
<div class="tab-content with-panel">
<div id="line-blue" class="tab-pane">
<div class="row">
<div class="col-md-10">
<div class="inputer">
<div class="input-wrapper">
{{form.group_name}}
</div>
</div>
</div>
<div class="col-md-2">
<button type="button" class="btn btn-green btn-flat btn-ripple">Erstellen</button>
</div>
<div class="col-md-12 locations">
{{form.locations}}
</div>
</div><!--.row-->
</div><!--.tab-pane-->
</div>
</div><!--.tab-content-->
</div><!--.panel-body-->
</div><!--.col-md-6-->
答案 0 :(得分:0)
经过大量的反复试验后,这是解决方案。
当然,可以通过字段访问查询集,并在管理员中显示多项选择。 尽管另有说明。
您无法在表单标记中使用更多值。因此,解决方案是将表单拆分为更小的部分。 多选形式通常如下所示:
<li>
<label for="id"><input class="styled" id="id"
name="formfield name" type="checkbox" value="1">
queryset item name
</label>
值1是Form设置的primaryKey。因此,为了让Django仍然能够理解多对多字段,您需要表单字段名称和主键。
所以现在我的部分卡住了我如何获得这些价值观?
{% for item in form."querysetname".field.queryset.all %}
<li>
<input name="formfieldname" type="checkbox"value="{{item.pk}}">
{{item.querysetitem}} {{item.querysetitem}} {{item.querysetitem}}
</li>
{% endfor %}
item.pk代表主键。 表单域名称可以复制。
希望有助于以防有人需要多个字段,使用db查询集和表单。