Почему не выводятся данные из модели Django
файл models.py
from django.db import models
from django.contrib.auth.models import User
class UserCoin(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
coin = models.DecimalField(null=False, decimal_places=2, max_digits=1000, default=1)
def __str__(self):
return f'{self.coin}'
views.py
from django.shortcuts import render
from django.contrib.auth.models import User
from django.views.generic import DetailView
from register.models import UserCoin
def index2(request):
username = User.objects.all()
return render (request, 'main2/index2.html', {'username':username})
usercoin = UserCoin.objects.all()
return render (request, 'main2/index2.html', {'usercoin':usercoin})
class Users(DetailView):
model = User
template_name = 'index2.html'
context_object_name = 'user'
class Coins(DetailView):
model = UserCoin
template_name = 'index2.html'
context_object_name = 'coin'
html шаблон(не полностью)
{% block content %}
<header>
<div class="Top_menu">
<ul>
<li><a href="">{{ request.user.username }}</a></li>
<li><a href="">{{ request.coin.usercoin }}</a></li>
</ul>
</div>
пытаюсь вывести поле usercoin, но оно не выводится в отличие от username
В вашем случае в функции index2
второй return
выполняться не будет, потому что после первого return
произойдет выход из функции. Чтобы исправить вашу ошибку, нужно дополнить контекст данными из второго return
:
def index2(request):
username = User.objects.all()
usercoin = UserCoin.objects.all()
return render(
request,
'main2/index2.html',
{
'username': username,
'usercoin': usercoin
}
)