Django ModelForm ForeignKey查询

时间:2018-03-23 18:42:23

标签: python django

我希望有一个表单,只提供用户为他参与的项目发布问题。

models.py:

class Project(models.Model):
    project_name = models.CharField(max_length=255, unique=True, blank=False)
    def __str__(self):
        return str(self.project_name)


class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    project = models.ManyToManyField(Project)
    def __str__(self):
        return str(self.user)

class Question(models.Model):           
    title = models.CharField(max_length=255, blank=False)
    content = tinymce_models.HTMLField(blank=False)
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    project = models.ForeignKey(Project, on_delete=models.CASCADE)
    ...
    def __str__(self):
        return str(self.title)


class QuestionForm(ModelForm):
    class Meta:
        model = Question
        fields = ['title', 'content', 'project']
在views.py中

form = QuestionForm()
form.fields["project"].queryset = Project.objects.filter(project_name__in=request.user.profile.project.all())

但不知何故,查询结果始终为空。

有人可能知道我缺少什么吗?

1 个答案:

答案 0 :(得分:1)

您的查询过于复杂。您应该直接使用用户的项目:

form.fields["project"].queryset = request.user.profile.project.all())