Как получить конкретные данные из модели в профиле, когда человек вошел в систему, Django?
Я хочу публиковать определенные данные в профиле пользователя, который вошел в систему.
У меня есть такая модель:
class Customer(models.Model):
user = models.OneToOneField(User, null=True, on_delete=models.CASCADE)
name = models.CharField(max_length=60)
email = models.EmailField(max_length=100)
class Wallet(models.Model):
name = models.OneToOneField(User, null=True, on_delete=models.CASCADE)
usd = models.FloatField(null=True)
Если, например, 'user2' вошел в систему, и в базе данных у него 10usd, я хочу, чтобы в его профиле отображалось 10usd.
Но я не знаю, как запросить конкретные данные пользователя, который вошел в систему
Views.py
@login_required(login_url='main')
def profile_user(request):
usd = wallet.objects.get (get his usd from db)
return render(request, 'profile.html', {'usd':usd})
Большое спасибо.
вы можете получить id вошедшего пользователя следующим образом
user_id = request.user.id
тогда вы можете использовать его для получения информации о кошельке этого пользователя
@login_required(login_url='main')
def profile_user(request):
wallet_data= Wallet.objects.filter(name_id=user_id).values("usd").first()
return render(request, 'profile.html', {'usd':wallet_data['usd']})
Еще одна рекомендация - держите имя поля Proper связанным с именем таблицы FK.
например, вы задали name = models.OneToOne
для User.
вы должны задать его как
class Wallet(models.Model):
user = models.OneToOneField(User, null=True, on_delete=models.CASCADE)
usd = models.FloatField(null=True)
Вы можете передать класс наследия с помощью AbstractUser
from django.contrib.auth.models import AbstractUser из django.db import models
class CustomUser(AbstractUser): pass # добавляем дополнительные поля здесь
def __str__(self):
return self.username