如何在 Django 模型中获取用户 ID?
how to get users id in django model?
我需要从登录用户获取 ID 以在 models.how 中过滤查询以获取 Django 模型中的用户 ID?
谢谢
在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)
I need to get id from logged user to filter query in models.
模型设计为 request-unaware。如果要检索用户id,则需要通过参数传递它,因此:
class Portfo(models.Model):
# …
def final_amount(self<strong>, user_id</strong>):
final_amount = 0
buy = Buy.objects.filter(product_id=self.product_id<strong>, owner_id=user_id</strong>)
sell = Sell.objects.filter(product_id=self.product_id<strong>, owner_id=user_id</strong>)
# …
在视图中,您可以使用 .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(<strong>request.user.id</strong>)
# …
我需要从登录用户获取 ID 以在 models.how 中过滤查询以获取 Django 模型中的用户 ID? 谢谢
在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)
I need to get id from logged user to filter query in models.
模型设计为 request-unaware。如果要检索用户id,则需要通过参数传递它,因此:
class Portfo(models.Model):
# …
def final_amount(self<strong>, user_id</strong>):
final_amount = 0
buy = Buy.objects.filter(product_id=self.product_id<strong>, owner_id=user_id</strong>)
sell = Sell.objects.filter(product_id=self.product_id<strong>, owner_id=user_id</strong>)
# …
在视图中,您可以使用 .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(<strong>request.user.id</strong>)
# …