我已经从我的django表单中过滤了一个字段查询集,现在突然在html页面中,当我点击提交它不再保存但是如果我评论该方法,我可以再次保存。我的代码
以下是非常感谢的任何帮助模特:
class Model_A(models.Model):
project_name = models.CharField(max_length=50, unique=True)
project_manager = models.ForeignKey(Employee, on_delete=models.CASCADE, related_name='project_manager', null=True,
blank=True)
def __str__(self):
return self.project_name
form.py:
class EditProjectForm(forms.ModelForm):
prefix = 'edit_form'
class Meta:
model = Model_A
fields = '__all__'
#Save failed after adding this method
def __init__(self, user, *args, **kwargs):
super(EditProjectForm, self).__init__(*args, **kwargs)
self.fields['project_manager'].queryset = Employee.objects.filter(department__in=[18, 19, 20]).exclude(employment_status=6)
view.py:
def project_setting(request, project_id):
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('/projects/{}/setting'.format(project_id))
context = {
'form': form,
}
return render(request, '/projects/setting.html', context=context)
答案 0 :(得分:-2)
更新:
找到解决方案,而不是从form.py中过滤查询集,只需使用以下行在view.py中查询:
form.fields['project_manager'].queryset = Employee.objects.filter(department__in=[18, 19, 20]).exclude(employment_status=6)