gpt4 book ai didi

django - django 模板中的两个外键和一个值

转载 作者:行者123 更新时间:2023-12-04 21:51:25 27 4
gpt4 key购买 nike

我是 django 的新手,所以这个问题可能很愚蠢,但如果你知道,请随时教我正确的方法。
我试着用谷歌搜索这个问题,但我仍然不知所措。
这是我的问题:

我的模型中有一个类,它有两个外键:

class X(models.Model):
name = models.CharField(max_length=30)
def __unicode__(self):
return name

class Y(models.Model):
name = models.CharField(max_length=30)
def __unicode__(self):
return name

class Z(models.Model):
name = models.CharField(max_length=30)
x = models.ForeignKey(X)
y = models.ForeignKey(Y)
def __unicode__(self):
return name

在我看来,我得到了 X 对象的部分列表和 Y 对象的部分列表,如下所示:
def MyView(x_pattern, y_pattern):
x_list = X.objects.filter(name__contains=x_pattern)
y_list = Y.objects.filter(name__contains=y_pattern)
z_list = Z.objects.all()
return render_to_response({'x_list': x_list, 'y_list': y_list, 'z_list': z_list})

在我的模板中,我希望能够显示如下表格:
<table>
<tr>
<td>Y</td>
{% for x in x_list %}
<td>{{ x }}</td>
{% endfor %}
</tr>
{% for y in y_list %}
<tr>
<td>{{ y }}</td>
{% for x in x_list %}
<td>
<!-- here I need help:
I need to display z[x, y] if it exists, or "N/A" otherwise.
-->
</td>
{% endfor %}
</tr>
{% endfor %}

如何在 Django 中正确执行此操作?

非常感谢,

最佳答案

作为@DZPM suggested ,您应该考虑将逻辑保留在您的 View 中。 [sheepish] 我曾经发明了自己的“表”数据结构来做一些非常相似的事情。该表具有对应于 X 的行, 列对应于 Y和对应于 Z[X, Y] 的单元格.然后我写了get_rowget_cell过滤器来做模板中的技巧。 [/绵羊]

也就是说,您可以使用一对自定义过滤器来完成您想要的。这个解决方案相当冗长。

@register.filter
def x_is(value, x):
return value.x == x

@register.filter
def y_is(value, y):
return value.y == y

您可以在模板中使用这些过滤器,如下所示:
{% if z|x_is:x and z|y_is:y %}
{{ z }}
{% else %}
N/A
{% endif %}

关于django - django 模板中的两个外键和一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3750783/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com