0

我有以下型号:

class CompanyRole(models.Model):
    name = models.CharField(max_length=150)

    def __str__(self):
        return self.name


class Office(models.Model):
    company_role = models.ForeignKey(CompanyRole, on_delete=models.SET_NULL, null=True)
    name = models.CharField(max_length=150)


    def __str__(self):
        return self.name


class User(AbstractBaseUser, PermissionsMixin):

    email = models.EmailField(_('email address'), unique=True)
    username = models.CharField(max_length=150, unique=True)
    company_role = models.ForeignKey(CompanyRole, on_delete=models.SET_NULL, null=True)
    office = ChainedForeignKey(
        Office,
        on_delete=models.SET_NULL,
        null=True,
        blank=True,
        chained_field="company_role",
        chained_model_field="company_role",
        show_all=False,
        auto_choose=True,
        sort=True,
        )

    objects = CustomAccountManager()

    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = ['username']

    def __str__(self):
        return self.username

以及以下形式:

class RegisterForm(UserCreationForm):
    office = forms.ModelChoiceField(queryset=Office.objects, empty_label='Select Office')


    def __init__(self, *args, **kwargs):
        super(RegisterForm, self).__init__(*args, **kwargs)
        self.fields['email'].widget.attrs.pop("autofocus", None)



    class Meta:
        model = User
        fields = ["username", "email", "company_role", "office"]

这一切都与智能选择应用程序中的链式选择一起正常工作,但是我需要显示 empty_label 以显示“选择办公室”,我通过在我的表单中添加以下行来做到这一点,如上所示:

office = forms.ModelChoiceField(queryset=Office.objects, empty_label='Select Office')

但是,由于将该行添加到我的表单中,empty_label 现在会显示,但链接选择已被破坏,就像以前一样,用户将选择公司角色,并且根据选择将填充办公室列表。

例如:公司角色选择是翻译,那么不会填充任何办公室,但是如果他们从公司角色中选择员工,那么所有办公室都会填充,但是现在所有办公室都被填充,无论选择了什么公司角色,因为将行添加到我的表单以显示空标签。如果我在表单中注释该行,则链接的 selct 将按应有的方式工作。

我感谢任何帮助解决我做错了什么的问题,或者是否有另一种方法可以为链式下拉列表添加 empty_label。提前致谢

4

0 回答 0