在Django ModelForm

时间:2017-03-16 18:14:49

标签: django django-models django-forms django-views

我构建了以下模型。我认为这很容易被问到,但我真的很坚持!

模型的一部分

class Task(models.Model):
    Taskdetails = models.CharField(max_length=500, null=True)    
    employee = models.ForeignKey("auth.User", null = True)

    def __str__(self):
        return str(self.id)

表格

class TaskForm (ModelForm):

    class Meta:
        model = Task
        fields = ('Taskdetails','employee',)

部分观点

def task_new(request):
    if request.method == "POST":
        task_form = TaskForm(request.POST)

        if task_form.is_valid():
           task_form.employee = User.objects.filter(groups__name='supervisor')

因此,在我创建模型实例的模板中,在下拉菜单中,我尝试显示属于某个组的用户(在此示例中为组管理员)。相反,在模板中,下拉菜单显示所有用户,而不考虑我放入视图的过滤器。

总而言之,我试图在Django 1.9版中找出按群组过滤用户的方法。

同样重要的是,我使用默认的用户模型,因此未在模型中声明属性 group 。当我将以下行写入Python控制台时,它仅显示属于“主管”组的用户。

User.objects.filter(groups__name='supervisor')  

1 个答案:

答案 0 :(得分:0)

您希望在显示表单时将员工限制为某些用户(主管),对吗?

然后,我不明白为什么您在发布表单后将表单的员工字段设置为某个值

你可能想要的是这样的:

class TaskForm(forms.ModelForm):
    class Meta:
        model = Task
        fields = ('Taskdetails','employee',)

    def __init__(self, *args,**kwargs):
        super (TaskForm,self ).__init__(*args,**kwargs)
        self.fields['employee'].queryset = User.objects.filter(groups__name='supervisor')