【发布时间】: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