如何在Django CreateView、UpdateView中筛选值
我正在尝试使用CreateView和UpdateView修改记录。我的问题是ForeignKey下拉列表列出了所有公司的值(Psa.number),而不是用户所属公司的值如何在Django CreateView、UpdateView中筛选值,django,django-forms,Django,Django Forms,我正在尝试使用CreateView和UpdateView修改记录。我的问题是ForeignKey下拉列表列出了所有公司的值(Psa.number),而不是用户所属公司的值 class Psa(models.Model): owner = models.ForeignKey(Employer) number = models.PositiveIntegerField(unique=True... type = models.CharField(max_length=6 ..
class Psa(models.Model):
owner = models.ForeignKey(Employer)
number = models.PositiveIntegerField(unique=True...
type = models.CharField(max_length=6 ...
class Employer(models.Model):
employer_name = models.CharField(max_length=100, unique=True)
表格:
class PsaCreateForm(forms.ModelForm):
class Meta:
model = Psa
fields = [
'number',
'type',
]
解决这个问题的最好办法是什么?我还有几个其他条件使用相同的公司foreignkey关系,因此有没有办法在模型上创建一个方法,以便我可以重用?您需要在CreateView和UpdateView中获取表单(self):
forms.py:
class PsaCreateForm(forms.ModelForm):
model = Psa
fields = [
'number',
'type',
]
def __init__(self, *args, **kwargs):
self.current_user = kwargs.pop('user')
super(PsaCreateForm, self).__init__(*args, **kwargs)
if self.current_user:
self.fields['number'].queryset = Psa.objects.filter(owner=self.current_user)
views.py
class PsaCreate(CreateView):
model = Psa
template_name = 'form.html'
form_class = PsaCreateFrom
def get_form_kwargs(self):
kwargs = super(PsaCreate, self).get_form_kwargs()
kwargs['user'] = self.request.user
return kwargs
这也是个好主意。在视图中设置def调度(self、request、*args、**kwargs)
def dispatch(self, request, *args, **kwargs):
obj = self.get_object()
if obj.owner != self.request.user:
return HttpResponseRedirect(reverse('home'))
return super(PsaUpdate, self).dispatch(request, *args, **kwargs)
我使用此命令得到以下错误:super(type,obj):obj必须是type的实例或子类型