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计划=此_计划)