【问题标题】:How to add empty_label with smart-selects ChainedForeignKey in Django如何在 Django 中使用智能选择 ChainedForeignKey 添加 empty_label
【发布时间】:2022-08-22 13:35:18
【问题描述】:

我有以下型号:

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\"]

这一切都适用于 smart-selects 应用程序的链式选择,但是我需要显示 empty_label 以显示 \'Select Office\' 我设法通过将以下行添加到我的表单中来做到这一点,如上所示:

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

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

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

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

    标签: django django-smart-selects


    【解决方案1】:

    请您指导我如何在 django 中使用 ChainedForeignKey,例如在所有要使用的文件中必须进行哪些更改, 我被困在这里。

    【讨论】:

      猜你喜欢
      • 2021-12-24
      • 1970-01-01
      • 1970-01-01
      • 2016-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-18
      相关资源
      最近更新 更多