如何在Django html页面中显示Foreignkey数据



我想从相关的外键模型中获取数据,但我无法从相关的模型中获得数据,请告诉我如何做到。我想从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>

首先,使用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})

在模板中,使用反向关系查询Model1实例:

{% for object in test_display.model_one.all %}
{{ object.name }}
{% endfor %}

由于ForeignKey的原因,Model1和Model2之间的关系是多对一的,因此您将从反向查询Model2实例中获得多个Model1对象。如果只想为Model2存储一个对象,请考虑使用OneToOne关系。

首先,您必须修复语法错误:

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

第二个尝试访问这样的Queryset:


<p>{{  test_display.name  }}</p>

最新更新