gpt4 book ai didi

python - 在单个 Django 模板上显示来自 2 个模型的内容

转载 作者:行者123 更新时间:2023-11-28 20:14:24 25 4
gpt4 key购买 nike

我正在处理我的第一个 Django 项目,我已经使用 View 在我的页面模板上打印了我的第一个模板标签。我想在我的页面上显示一些其他数据库值,但重复相同的过程似乎是错误的。

这是我的两个模型:

class Drink(models.Model):
drink_name = models.CharField(max_length=100)
strength = models.IntegerField(default=0)
def __str__(self):
return self.drink_name


class status(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
health = models.IntegerField(default=100)
strength = models.IntegerField(default=50)
charisma = models.IntegerField(default=50)

我的观点:

from django.shortcuts import render

from .models import Drink
from .models import status

# Create your views here.
def index(request):
served_drinks = Drink.objects.order_by('strength')
context = {'served_drinks': served_drinks}
return render(request, 'tavern/index.html', context)

还有我的模板:

  Hello {{ user.get_username }}, welcome to the tavern.

<br><br>

<div class="card-panel teal lighten-3">Grab a drink from the bar</div>
{% if served_drinks %}
<ul>
{% for drink in served_drinks %}
<li>{{ drink.drink_name }} with a strength of {{ drink.strength }}</li>
{% endfor %}
</ul>
{% else %}
<p>No drinks are available.</p>
{% endif %}

哪个返回:

Hello admin, welcome to the tavern. 

Grab a drink from the bar
Water with a strength of 0
Wine with a strength of 3
Ale with a strength of 5
Black Ale with a strength of 9

如您所见,我已经在模板中打印出我的 served_drinks 对象,但我还想在此页面上打印出来自 status 模型的数据。

我试过简单地将 {{ status.health }} 添加到模板,但这不起作用。我应该向 index View 添加额外信息吗?如果是这样,如果我想在多个页面上显示此信息怎么办?

最佳答案

您还应该将您的状态实例传递给 View 的上下文。例如,让我们在数据库中获取状态模型的第一个实例:

def index(request):
served_drinks = Drink.objects.order_by('strength')
status = status.objects.all().first()
context = {'served_drinks': served_drinks, 'status': status}
return render(request, 'tavern/index.html', context)

现在,您可以在模板中使用 {{ status.health }}

此外,请尝试以大写字母开头您的型号名称。因此,模型状态优于状态。这只是良好做法。

关于python - 在单个 Django 模板上显示来自 2 个模型的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50047049/

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