限制选择

2024-05-23 14:57:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个名为Project的模型,它有一个m2m现场用户。我有一个FK项目的任务模型。它有一个指定给的字段。如何将“分配给”选项仅限于当前项目的用户?在


Tags: 项目用户模型project选项现场fkm2m
2条回答

你可以用另一种方法,用这个漂亮的表单工厂技巧。在

def make_task_form(project):
    class _TaskForm(forms.Form):
        assigned_to = forms.ModelChoiceField(
              queryset=User.objects.filter(user__project=project))

        class Meta:
            model = Task
    return _TaskForm

然后从您的视图代码中可以执行以下操作:

^{pr2}$

您需要创建一个custom form for the admin。在

您的表单应该包含一个ModelChoiceField,您可以在其中指定一个queryset参数来定义可用的选项。这个表单可以是一个模型表单。在

(以下示例假设用户对您的项目模型具有FK)

表单.py

from django import forms

class TaskForm(forms.ModelForm):
    assigned_to = forms.ModelChoiceField(queryset=Users.objects.filter(user__project=project))

    class Meta:
        model = Task

然后将表单分配给ModelAdmin。在

管理员py

^{pr2}$

相关问题 更多 >