如何在 Django html 页面中显示外键数据?
Posted
技术标签:
【中文标题】如何在 Django html 页面中显示外键数据?【英文标题】:How to display Foreignkey Data in Django html page? 【发布时间】:2020-12-26 02:22:34 【问题描述】:我想从相关的外键模型中获取数据,但是我无法从相关模型中获取数据,请告诉我该怎么做。我想显示来自Model2
表的name
值..
这是我的models.py
文件...
class Customer(models.Model):
cus_name=models.Charfield(blank=True)
class Model1(models.Model):
namefield=models.Charfield(blank=True)
class Model2(models.Model):
name=models.CharField(default=None)
model1=models.Foreignkey(Model1, related_name='model_one', on_delete=models.CASCADE)
customer=models.Foreignkey(Customer, related_name='customer_data', on_delete=models.CASCADE)
这是我的views.py
文件...
def display_data(request, id):
test_display=Model1.objects.filter(pk=id).first()
return render(request, 'page.html', 'test_display':test_display)
这是我的test.html
文件,我在其中显示来自Model2
表的name
<p>test_display.model_one.name</p>
【问题讨论】:
【参考方案1】:首先,使用get()
或get_object_or_404()
方法代替filter(...).first()
:
from django.shortcuts import get_object_or_404
def display_data(request, id):
test_display=get_object_or_404(Model1.objects.prefetch_related('model_one'), pk)
# or Model1.objects.prefetch_related('model_one').get(pk=pk)
return render(request, 'page.html', 'test_display':test_display)
并且在模板中,使用reverse relation查询Model1实例:
% for object in test_display.model_one.all %
object.name
% endfor %
由于Model1和Model2之间的关系由于ForeignKey是多对一的,反向查询Model2实例会得到多个Model1对象。如果您只想为 Model2 存储一个对象,请考虑使用OneToOne
关系。
【讨论】:
它工作得很好,但我也想要来自Model2
的Customer
数据,我想显示来自Customer
模型的name
...请检查我更新的问题
然后使用 object.customer.name
它工作得很好,但在for loop
上面给了我一行输出...例如-name1 name2
但我想要comma-separated
像这样name1, name2
你好 Rudra,你能解决这个问题吗...***.com/questions/63840351/…【参考方案2】:
首先你必须修复你的语法错误:
def display_data(request, id):
test_display = Model2.objects.filter(pk=id).first()
context =
'test_display': test_display
return render(request, 'page.html', context)
# render instead of ender
第二个尝试像这样访问查询集:
<p> test_display.name </p>
【讨论】:
它给了我错误Model1 Object is not iterable
它将显示来自Model1
的名称,但我想显示来自Model2
的名称值
@sainitor 然后查询model2,查看答案
我想在查询中使用Model1
获取Model2
的数据,因为我在Model1
和Model1
中有多个与其他模型相关的数据存储...所以我的优先级是使用Model1
显示数据以上是关于如何在 Django html 页面中显示外键数据?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Django 网站的 HTML 页面中显示数据库数据?