gpt4 book ai didi

python - Django 表单中的 FilterSelectMultiple 不保存

转载 作者:太空宇宙 更新时间:2023-11-03 14:55:51 26 4
gpt4 key购买 nike

我正在尝试使用 django 表单在我的网页中创建一个用户权限字段,其工作方式与使用 FilterSelectMultiple 在管理页面中完全相同。 。目前它正确填充数据并且选择和取消选择按钮正在工作,但我无法保存表单,每当我点击保存时,页面刷新并且所有用户都会再次取消选择。

user = forms.ModelMultipleChoiceField(queryset=Project.objects.all(),
widget=FilteredSelectMultiple('User', is_stacked=False))

不工作。

我该如何解决这个问题?非常感谢任何帮助,谢谢

下面是我的代码:

HTML:

<link rel="stylesheet" type="text/css" href="/static/admin/css/base.css" />
<link rel="stylesheet" type="text/css" href="/static/admin/css/forms.css" />

<form method="POST" enctype="multipart/form-data" id=setting_form" name="setting_form" onsubmit="updateDiv()">{% csrf_token %}

<!--USER-->
<div class="field">
<label>User permissions:</label>
<div class="related-widget-wrapper">
<select name="user_permissions" id="id_user_permissions" multiple="multiple" class="selectfilter" data-field-name="user permissions" data-is-stacked="0">
<option value={{ form.user }}></option>
</select>
</div>

<div class="btn-toolbar pull-right">
<div class="btn-group" role="group" aria-label="...">
<input class="btn btn-success" type="submit" value="Save Changes"/>
</div>
</div>
</form>

<script src="/admin/jsi18n"></script>
<script type="text/javascript" src="/static/admin/js/vendor/jquery/jquery.js"></script>
<script type="text/javascript" src="/static/admin/js/jquery.init.js"></script>

查看.py

def project_setting(request):
form = EditProjectForm(request.POST or None, request.FILES or None, instance=selected_project, prefix='settings')
if form.is_valid():
inst = form.save(commit=False)
inst.save()
form.save_m2m()
return HttpResponseRedirect('/dashboard/projects/{}/setting'.format(project_id))

context = {

'form': form,
}
return render(request, 'dashboard/projects/setting.html', context=context)

表单.py:

from django.contrib.admin.widgets import FilteredSelectMultiple

class EditProjectForm(forms.ModelForm):

class Meta:
model = Project
fields = '__all__'
user = forms.ModelMultipleChoiceField(queryset=Project.objects.all(),
widget=FilteredSelectMultiple('User', is_stacked=False))

模型.py:

class Project(models.Model):
user = models.ManyToManyField(Employee, blank=True)

编辑:

检查页面源代码后,我的表单声明如下

<select name="user_permissions" id="id_user_permissions" multiple="multiple" class="selectfilter" data-field-name="user permissions" data-is-stacked="0">
<option value=<select name="settings-user" id="id_settings-user" multiple="multiple">
<option value="3">User A</option>
<option value="4">User B</option>
</select></option>
</select>

它宣布了另一个 <select>在我的里面<select>标签

最佳答案

我不熟悉那个小部件,但是,将用户字段渲染到这样的选项标记中看起来很奇怪。我也没有看到关闭表单标签或提交按钮?

我本以为它会是这样的:

<link rel="stylesheet" type="text/css" href="/static/admin/css/base.css" />
<link rel="stylesheet" type="text/css" href="/static/admin/css/forms.css" />

<form method="POST" enctype="multipart/form-data" id=setting_form" name="setting_form" onsubmit="updateDiv()">{% csrf_token %}

<!--USER-->
<div class="field">
<label>User permissions:</label>
<div class="related-widget-wrapper">
{{form.user}}
</div>
<input type="submit" value="save">
</form>
<script src="/admin/jsi18n"></script>
<script type="text/javascript" src="/static/admin/js/vendor/jquery/jquery.js"></script>
<script type="text/javascript" src="/static/admin/js/jquery.init.js"></script>

关于python - Django 表单中的 FilterSelectMultiple 不保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45585951/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com