带有Queryset的Django Form ChoiceField

问题描述 投票:3回答:2

我需要在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)
django forms model
2个回答
3
投票
primary = forms.ModelChoiceField(
        queryset=User.objects.filter(name=request.user.profile.firm.name))

在您的模型表单中使用它

在您访问表单的视图中

FirmForm(request=request)

1
投票

我得到了这个工作。我能做的最好。谢谢。

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 )
© www.soinside.com 2019 - 2024. All rights reserved.