我有两张桌子:
Table1: [A-Foriegn Key, field1]
Table2: [Table1-Foriegn Key, field2]
如果Table2中存在项目,我想显示具有Table1 field1的不同值的列表。在该列表中,我想显示Table2的所有元素,对应于Table1的field1。
我在尝试:
{% for t1 in Table1 %}
Display field1 of t1
{% for t2 in Table2 %}
Display field2 of t2.
{% endfor %}
{% endfor %}
表1:
╔════╦══════════════╦══════╗
║ Id ║ EventName ║ FK ║
╠════╬══════════════╬══════╣
║ 1 ║ Christmas ║ 56 ║
║ 2 ║ Black Friday ║ 18 ║
╚════╩══════════════╩══════╝
表2:
╔════╦══════════════╦══════╗
║ ID ║ Image ║ FK ║
╠════╬══════════════╬══════╣
║ 1 ║ image1_url ║ 1 ║
║ 2 ║ image2_url ║ 1 ║
║ 3 ║ image3_url ║ 2 ║
║ 4 ║ image4_url ║ 2 ║
╚════╩══════════════╩══════╝
我想在列表中显示:圣诞节和BlackFriday。
点击列表中的元素,我想显示该特定事件的所有网址。 就像点击圣诞节一样:应该显示image1_url和image2_url。
我不想发出AJAX请求。
答案 0 :(得分:2)
您可以在模板中使用外键映射来引用对象。
假设您有两个表Table1和Table2,其映射类似于Table1 - > Table2,Table2中的外键字段引用Table1,你可以这样做:
您的views.py
将是这样的:
table1 = Table1.objects.all()
table2 = Table2.objects.all()
return render('template_name.html',{'table1':table1, 'table2':table2})
然后你的html模板就像:
{% for table1Instace in table1 %}
{% for table2Instance in table1Instace.table2_set.all %}
<!--Print table elements here-->
{% endfor %}
{% endfor %}
其中table2Instance
将是table2中行的对象,对应于table1中的外键映射。
希望这有帮助!
答案 1 :(得分:0)
models.py
class Category(models.Model):
name = models.CharField(max_length=45, blank=True)
class Items(models.Model):
name = models.CharField(max_length=45, blank=True)
rate = models.FloatField(default=0)
category_id = models.ForeignKey(Category)
views.py
def test_category(request):
s = Category.objects.all()
return_dict = {
's' : s
}
return render(request, 'base.html', return_dict)
{% for item in s%}
{{ item.name }}
{% for x in item.items_set.all %}
-- {{ x.name }}
{% endfor %}
{% endfor %}