Как изменить выбираемые параметры во многих областях?

#django #django-models #django-forms

Вопрос:

Я разрабатываю приложение, в котором пользователь создает документ с некоторым общим содержанием. Я настроил модель таким образом, чтобы пользователь мог поделиться этим документом с другими пользователями через множество полей, показанных ниже. Проблема, с которой я сталкиваюсь, заключается в том, что поле ManyToMany показывает всех пользователей на моем сайте как возможных сотрудников, в то время как я хочу показать им только членов их команды. Как бы я это сделал?

Мои модели:

 class Document(models.Model):
    ...
    collaborators = models.ManyToManyField(User, related_name="doc_collaborators")

class User(models.Model):
    ...
    team = models.CharField('team', max_length=50)
 

Мои бланки:

 class CreateDocForm(forms.ModelForm):

    class Meta:
        model = Document
        exclude = ('created_at', 'updated_at', 'owner', 'slug')
 

Комментарии:

1. показать файл forms.py с помощью которого вы показываете.

2. обновлено с помощью forms.py

Ответ №1:

Одним из решений может быть переопределение набора запросов при инициализации формы:

 class CreateDocForm(forms.ModelForm):
    ...
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['collaborators'].queryset = User.objects.filter([some filters])

    ...
 

Другим решением является использование сторонних модулей: django-автозаполнение-свет