我想从相关的外键模型中获取数据,但我无法从相关的模型中获取数据,请告诉我该怎么做。我要显示name
价值来自Model2
table..
这是我的models.py
file...
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
file...
def display_data(request, id):
test_display=Model1.objects.filter(pk=id).first()
return render(request, 'page.html', {'test_display':test_display})
这是我的test.html
我正在显示的文件name
from Model2
table
<p>{{test_display.model_one.name}}</p>
首先,代替filter(...).first()
, use get()
or get_object_or_404() method:
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})
并在模板中使用反向关系查询 Model1 实例:
{% for object in test_display.model_one.all %}
{{ object.name }}
{% endfor %}
由于ForeignKey导致Model1和Model2之间的关系是多对一的,因此反向查询Model2实例会得到多个Model1对象。如果您只想为 Model2 存储一个对象,请考虑使用OneToOne关系。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)