python - Django 表单中的 FilterSelectMultiple 不保存

标签 python html django forms widget

我正在尝试使用 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/

相关文章:

mysql - 如何清理或随机化敏感的数据库字段

python - Django 从模型中保存以前的对象

python - 运行shell命令并捕获输出

python - 检查列表列表的第一个元素

python - 运行 run_squad.py 微调 Google BERT 模型(官方 Tensorflow 预训练模型)时,无法加载(恢复)TensorFlow 检查点

css - 将外部 div 居中, 'text-align:center' 未按预期工作

javascript - Ruby on Rails 和服务 worker

html - 为什么光滑的 slider 不自适应?

python - 如何在 Django 查询集中进行小于或等于过滤?

django - 显示特定用户 django 的模型值