Отключенная опция в Django Select Widget с использованием ModelChoiceField - PullRequest
1 голос
/ 14 марта 2019

Я пытаюсь показать неактивных пользователей как "отключенных" в виджете выбора моей формы.

У меня есть работник, который является моделью пользователя 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...