Python 列出记录的当前用户的对象

Python 列出记录的当前用户的对象,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

我想问一下如何在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.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,该
请求针对这些
对象。对于该匹配,用户
具有as
Player
对象
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。