django:如何向queryset中的所有项添加额外字段

django:如何向queryset中的所有项添加额外字段,django,Django,我的模特看起来是这样的 class Test(models.Model): name = models.CharField(max_length=255) test_plan = models.FK(TestPlan) class TestPlan(models.Model): name = models.CharField(max_length=255) class Result(models.Model): user = models.FK(User)

我的模特看起来是这样的

class Test(models.Model):
    name = models.CharField(max_length=255)
    test_plan = models.FK(TestPlan)

class TestPlan(models.Model):
    name = models.CharField(max_length=255)

class Result(models.Model):
    user = models.FK(User)
    test_plan = models.FK(TestPlan)
    test = models.FK(Test)
    result = models.Boolean()
在视图中有一个plan对象的情况下,我可以通过执行plan.test\u set.all()来访问所有测试。但是有没有一种方法可以将所有现有的结果附加到该查询中(这样,一个结果对象就会附加到一个给定的测试用例中,如果它存在的话)

=====

我正在尝试运行以下命令

def get(self, request, *args, **kwargs):
     task = get_object_or_404(Plan, id=kwargs.get('id'))
     return render(request, self.template_name,
            {"task": task})

def post(self, request, *args, **kwargs):
    data = request.POST
    task = get_object_or_404(Task, id=kwargs.get('id'))
    tc = get_object_or_404(Test, id=data.get('tc_id'))
    tc_result, _ = Result.objects\
          .get_or_create(task=task, test=tc,
                           result=data.get('tc_result_status'))
    return HttpResponse("OK")

And in template:
{% for test in task.tests_set.all %}
{{ test }}(here I want to render test result, if it I have one for given test in given plan, for current user)
{% endfor %}

您希望访问反向一对多关系?只需以访问
tests\u set
的相同方式进行迭代即可

{% for test in task.tests_set.all %}
    {{ test }} 
    {% for result in test.result_set.all %}
       {{ result }}
    {% endfor %}
{% endfor %}

您希望访问反向一对多关系?只需以访问
tests\u set
的相同方式进行迭代即可

{% for test in task.tests_set.all %}
    {{ test }} 
    {% for result in test.result_set.all %}
       {{ result }}
    {% endfor %}
{% endfor %}

您希望访问反向一对多关系?只需以访问
tests\u set
的相同方式进行迭代即可

{% for test in task.tests_set.all %}
    {{ test }} 
    {% for result in test.result_set.all %}
       {{ result }}
    {% endfor %}
{% endfor %}

您希望访问反向一对多关系?只需以访问
tests\u set
的相同方式进行迭代即可

{% for test in task.tests_set.all %}
    {{ test }} 
    {% for result in test.result_set.all %}
       {{ result }}
    {% endfor %}
{% endfor %}

要在
task.tests\u set.all()或
test.result\u set.all()中过滤结果,需要与自定义对象一起使用

比如:

task = get_object_or_404(
    TestPlan.objects.prefetch_related(
        Prefetch('test_set', queryset=Test.objects.prefetch_related(
                Prefetch('result_set', queryset=Result.objects.filter(user=request.user))
        ))
    ),
    id=kwargs.get('id')
)
在模板中:

{% for test in task.test_set.all %}
    {% for result in test.result_set.all %}
        {{ result }}
    {% endfor %}
{% endfor %}

要在
task.tests\u set.all()或
test.result\u set.all()中过滤结果,需要与自定义对象一起使用

比如:

task = get_object_or_404(
    TestPlan.objects.prefetch_related(
        Prefetch('test_set', queryset=Test.objects.prefetch_related(
                Prefetch('result_set', queryset=Result.objects.filter(user=request.user))
        ))
    ),
    id=kwargs.get('id')
)
在模板中:

{% for test in task.test_set.all %}
    {% for result in test.result_set.all %}
        {{ result }}
    {% endfor %}
{% endfor %}

要在
task.tests\u set.all()或
test.result\u set.all()中过滤结果,需要与自定义对象一起使用

比如:

task = get_object_or_404(
    TestPlan.objects.prefetch_related(
        Prefetch('test_set', queryset=Test.objects.prefetch_related(
                Prefetch('result_set', queryset=Result.objects.filter(user=request.user))
        ))
    ),
    id=kwargs.get('id')
)
在模板中:

{% for test in task.test_set.all %}
    {% for result in test.result_set.all %}
        {{ result }}
    {% endfor %}
{% endfor %}

要在
task.tests\u set.all()或
test.result\u set.all()中过滤结果,需要与自定义对象一起使用

比如:

task = get_object_or_404(
    TestPlan.objects.prefetch_related(
        Prefetch('test_set', queryset=Test.objects.prefetch_related(
                Prefetch('result_set', queryset=Result.objects.filter(user=request.user))
        ))
    ),
    id=kwargs.get('id')
)
在模板中:

{% for test in task.test_set.all %}
    {% for result in test.result_set.all %}
        {{ result }}
    {% endfor %}
{% endfor %}

是否正在寻找保存数据库查询的方法?如果是这样,请查看
select\u related
prefetch\u related
我看不出select related在我的情况下如何工作。您能否提供一个要运行的示例/虚构代码?您是否在寻找保存数据库查询的方法?如果是这样,请查看
select\u related
prefetch\u related
我看不出select related在我的情况下如何工作。您能否提供一个要运行的示例/虚构代码?您是否在寻找保存数据库查询的方法?如果是这样,请查看
select\u related
prefetch\u related
我看不出select related在我的情况下如何工作。您能否提供一个要运行的示例/虚构代码?您是否在寻找保存数据库查询的方法?如果是这样的话,看看
select_related
prefetch_related
我看不出select related在我的情况下是如何工作的。你能提供一个你想运行的示例/想象的代码吗?好吧,让我困惑的是,我不想迭代当前测试的所有结果,而是过滤它们,例如,在视图中,我会进行过滤。过滤(test=this\u test,user=this\u user,test\u plan=this\u plan)让我困惑的是,我想迭代的不是当前测试的所有结果,而是对它们进行过滤,例如,在视图中,我会进行过滤。filter(test=this\u test,user=this\u user,test\u plan=this\u plan)让我困惑的是,我想迭代的不是当前测试的所有结果,而是一个过滤器。例如,在视图中,我会进行过滤。过滤器(test=此_测试,user=此_用户,test\u计划=此_计划)让我困惑的是,我想迭代的不是当前测试的所有结果,而是一个过滤器。例如,在视图中,我会进行过滤。过滤器(test=此_测试,user=此_用户,test\u计划=此_计划)