Как получить идентификатор пользователя в модели django?
Мне нужно получить id от зарегистрированного пользователя для фильтрации запроса в модели. как получить id пользователей в модели django? Спасибо
в models.py:
class Portfo(models.Model):
product = models.ForeignKey(Product, on_delete=models.CASCADE, null=True)
sell = models.ForeignKey(Sell, on_delete=models.CASCADE, null=True)
customer = models.ForeignKey(Customer, on_delete=models.CASCADE, null=True)
profit = models.PositiveIntegerField(null=True)
final_amount = models.IntegerField(null=True)
def __str__(self):
return self.product.name
def final_amount(self):
final_amount = 0
buy = Buy.objects.filter(product_id=self.product.id, owner__exact=...)
sell = Sell.objects.filter(product_id=self.product.id)
Мне нужно получить id от зарегистрированного пользователя для фильтрации запроса в модели.
Модели разработаны таким образом, чтобы не знать о запросах. Если вы хотите получить идентификатор пользователя, вам нужно передать его через параметр, так:
class Portfo(models.Model):
# …
def final_amount(self, user_id):
final_amount = 0
buy = Buy.objects.filter(product_id=self.product_id, owner_id=user_id)
sell = Sell.objects.filter(product_id=self.product_id, owner_id=user_id)
# …
В представлении вы можете затем использовать метод .final_amount(…), например, так:
from django.contrib.auth.decorators import login_required
from django.shortcuts import get_object_or_404
@login_required
def some_view(request, pk):
my_porfolio = get_object_or_404(Portfolio, pk=pk)
final_amount = my_portfolio.final_amount(request.user.id)
# …