Как добавить empty_label с помощью smart-selects ChainedForeignKey в Django
У меня есть следующие модели:
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"]
Все это прекрасно работало с цепочкой selects из приложения smart-selects, однако мне нужно было показать пустую_метку для отображения 'Select Office', что мне удалось сделать, добавив следующую строку в форму, как показано выше:
office = forms.ModelChoiceField(queryset=Office.objects, empty_label='Select Office')
Но после добавления этой строки в мою форму теперь отображается пустая_метка, но цепной выбор нарушен, так как раньше пользователь выбирал роль компании и в зависимости от выбора заполнял список офисов.
Например: выбор роли компании был переводчик, тогда ни один офис не будет заполнен, но если они выбрали сотрудника из роли компании, тогда все офисы будут заполнены, но теперь все офисы заполнены независимо от того, какая роль компании была выбрана после добавления строки в мою форму, чтобы показать пустую_метку. Если я закомментирую эту строку в форме, то цепочка selct работает как надо.
Буду благодарен за любую помощь в решении этого вопроса, что я делаю не так или если есть другой способ добавить empty_label для цепочки выпадающих элементов. Заранее спасибо