带有Queryset的Django Form ChoiceField
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了带有Queryset的Django Form ChoiceField相关的知识,希望对你有一定的参考价值。
我需要在ModelForm中让公司的其他用户设置主用户,我不知道如何在表单中获取变量?
在视图中,所需的变量将是:
request.user.profile.firm
这是需要创建的表单。
class FirmForm(forms.ModelForm):
primary = forms.ModelChoiceField(
queryset=User.objects.filter(name=request.user.profile.firm))
class Meta:
model = Firm
档案模型:
class Profile (models.Model):
user = models.OneToOneField(
settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
firm = models.ForeignKey(
Firm, on_delete=models.CASCADE, null=True, blank=True)
def __str__(self):
return str(self.user.username)
公司模式
class Firm (models.Model):
name = models.CharField(max_length=100)
def __str__(self):
return str(self.name)
答案
primary = forms.ModelChoiceField(
queryset=User.objects.filter(name=request.user.profile.firm.name))
在您的模型表单中使用它
在您访问表单的视图中
FirmForm(request=request)
另一答案
我得到了这个工作。我能做的最好。谢谢。
def __init__ ( self, *args, **kwargs ):
super ( FirmForm, self ).__init__ ( *args, **kwargs )
instance = getattr ( self, 'instance', None )
firm = self.instance
self.fields [ 'contact' ].queryset = Profile.objects.filter ( firm = firm )
以上是关于带有Queryset的Django Form ChoiceField的主要内容,如果未能解决你的问题,请参考以下文章
Django:将带有相关对象的 QuerySet 转换为 JSON