Я пытаюсь показать неактивных пользователей как "отключенных" в виджете выбора моей формы.
У меня есть работник, который является моделью пользователя django.
models.py
class Task(models.Model):
worker = models.ForeignKey(settings.AUTH_USER_MODEL, models.DO_NOTHING, blank=True, null=True,related_name='worker')
Он представлен ModelForm, использующим подкласс для отображения полного имени пользователя.
forms.py
class UserModelChoiceField(forms.ModelChoiceField):
def label_from_instance(self, obj):
return obj.get_full_name()
class TaskForm(forms.ModelForm):
worker = UserModelChoiceField(queryset=User.objects.filter(is_active=1).order_by('first_name'),widget=forms.Select(attrs={'class':'form-control'}),required=False)
class Meta:
model = Task
fields = ['worker']
В настоящее время фильтр is_active = 1 означает, что неактивные пользователи просто не отображаются в списке, и там, где они уже были выбраны, это отображается как «---».
Моим идеалом будет то, что они появляются, но отображаются серым цветом, поэтому они представлены, но не могут быть выбраны.
Из обзора https://djangosnippets.org/snippets/2453/
Который я нашел в
Опция «Отключено» для choiceField - Django
Мне удалось сделать вывод, что подкласс select должен работать. Однако я не могу сказать, как пройти между набором запросов и виджетом для достижения ожидаемого результата. Чтение предполагает, что метод рендеринга в виджете может быть подходящим способом, но я не смог найти примеры того, как передавать информацию или где именно вызывается create_option.