1
我試圖創建在我的網頁使用Django的形式使用FilterSelectMultiple
在管理頁面準確工作就像一個用戶權限字段。目前,它正確地填充數據和選擇和取消按鈕正常工作,但我無法保存的形式,每當我點擊保存,頁面刷新,所有的用戶都再次取消。FilterSelectMultiple在Django的形式不節能
的
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>
View.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)
Form.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))
Model.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>
標籤內
我的道歉,我簡化了我的代碼,我忘了加上提交按鈕和關閉標籤,謝謝指點出來, 是,我原來的語法是'{{form.user}}',但是該字段將顯示爲標準的'ManytoManyField'。我希望它顯示爲'FilteredSelectMultiple' –
那麼接下來指定'小部件= FilteredSelectMultiple(「用戶」,is_stacked = FALSE)'有沒有影響? –
是的,這是正確的,它顯示的原因是因爲我重新選擇領域就像從管理頁面用戶權限,改變價值,它應該已經工作,但它填充選擇,因此現在我在他們各自的領域適當取消數據米只是想搞清楚如何保存 –