Python 列出记录的当前用户的对象
我想问一下如何在django中通过基于类的视图列出当前登录用户的所有对象 我在项目中有两个应用程序。一个叫用户,另一个叫羽毛球 users/models.pyPython 列出记录的当前用户的对象,python,django,web,Python,Django,Web,我想问一下如何在django中通过基于类的视图列出当前登录用户的所有对象 我在项目中有两个应用程序。一个叫用户,另一个叫羽毛球 users/models.py from django.db import models from django.contrib.auth.models import User class Profile(models.Model): user = models.OneToOneField(User, null=True, on_delete=models.CA
from django.db import models
from django.contrib.auth.models import User
class Profile(models.Model):
user = models.OneToOneField(User, null=True, on_delete=models.CASCADE)
name = models.CharField(max_length=200, null=True)
from django.db import models
from users import models as users_models
class Player(models.Model):
name = models.OneToOneField(users_models.Profile ,null=True, on_delete=models.CASCADE)
matches_played = models.IntegerField(default=0, blank=True, null=True)
class Match(models.Model):
player_home = models.OneToOneField(Player, null=True, on_delete= models.SET_NULL, related_name='player_home')
player_away = models.OneToOneField(Player, null=True, on_delete= models.SET_NULL, related_name='player_away')
羽毛球/models.py
from django.db import models
from django.contrib.auth.models import User
class Profile(models.Model):
user = models.OneToOneField(User, null=True, on_delete=models.CASCADE)
name = models.CharField(max_length=200, null=True)
from django.db import models
from users import models as users_models
class Player(models.Model):
name = models.OneToOneField(users_models.Profile ,null=True, on_delete=models.CASCADE)
matches_played = models.IntegerField(default=0, blank=True, null=True)
class Match(models.Model):
player_home = models.OneToOneField(Player, null=True, on_delete= models.SET_NULL, related_name='player_home')
player_away = models.OneToOneField(Player, null=True, on_delete= models.SET_NULL, related_name='player_away')
如何通过queryset访问登录用户的所有匹配项?谢谢你的帮助 您可以列出
Matche
s,该请求针对这些对象。对于该匹配,用户
具有asPlayer
对象Player\u home
和/或Player\u away
:
from django.db.models import Q
Match.objects.filter(
Q(player_home__name__user=request.user) |
Q(player_away__name__user=request.user)
)
从django.db.models导入Q
Match.objects.filter(
Q(玩家\家庭\姓名\用户=request.user)|
Q(玩家\客场\姓名\用户=request.user)
)
注意:外键指的是对象,而不是该对象的字符串表示形式
对象因此,name
对于引用Profile
对象来说并不是一个好名字。你
可能想考虑将其重命名为“代码>配置文件< /代码> .<
我尝试了这个过滤器,它抛出了这样的错误:无法查询“pipikej”:必须是“Profile”实例。pipikej是登录用户的用户名。@pipikej:您是否使用了request.user
,或request.user.username
?我确实犯了一个小错误,编辑应该会解决这个问题。我使用了request.user。