0
我正在使用django-select2控件獲取更好的ManyToMany
控件。該視圖看起來更好,我可以搜索並選擇許多不同的用戶。但是,保存模型時,允許的用戶列表爲空。我試圖直接從視圖和單元測試。我無法理解我做錯了什麼。ManyToMany關係的Select2控件
有什麼想法?
我強烈懷疑存在兩個問題:一個是保存表單創建模型,另一個是我如何設置data
字典值。
我的模型:
class ProjectCode(models.Model):
allowed_users = models.ManyToManyField(User, blank=True)
我的表格:
class ProjectCodeForm(forms.ModelForm):
class Meta:
model = ProjectCode
fields = '__all__'
widgets = {'allowed_users': Select2MultipleWidget(), }
筆者認爲:
def create_code(request):
context = {}
if request.method == 'POST':
form = ProjectCodeForm(request.POST)
if form.is_valid():
new = form.save(commit=False)
new.save()
form = ProjectCodeForm()
context['form'] = form
return render(request, 'order_book/create_code.html', context)
我的測試:
def test_code_create_post_pass(self):
init = len(ProjectCode.objects.all())
data = {'allowed_users': [self.jdoe.pk, ], }
response = self.client.post('/order_book/code/create/', data)
self.assertEqual(response.status_code, 200)
self.assertContains(response, "Create a project code")
self.assertEqual(init + 1, len(ProjectCode.objects.all()))
self.assertEqual("jdoe", ProjectCode.objects.all()[0].display_allowed_users())
此測試失敗,:
======================================================================
FAIL: test_code_create_post_pass (order_book.tests.AuthorisedViewTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/path/tests.py", line 385, in test_code_create_post_pass
"jdoe", ProjectCode.objects.all()[0].display_allowed_users())
AssertionError: u'jdoe' != u''
- jdoe
+