如何更改多对多字段中的可选选项?

时间:2021-05-09 05:46:38

标签: 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 个答案:

答案 0 :(得分:0)

一种解决方案可能是在表单初始化时覆盖查询集:

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

    ...

另一种解决方案是使用第三方模块:django-autocomplete-light

相关问题