首页 > 解决方案 > 列出当前登录用户的对象

问题描述

我想问一下如何通过 django 中的基于类的视图列出登录的当前用户的所有对象。

我在项目中有两个应用程序。一个叫用户,一个叫羽毛球。

用户/模型.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)

羽毛球/models.py

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')

如何通过查询集访问登录用户的所有匹配项?感谢您的帮助!

标签: pythondjangoweb

解决方案


您可以列出Matchesrequest.user作为Player对象player_home和/或player_away匹配的对象:

from django.db.models import Q

Match.objects.filter(
    Q(player_home__name__user=request.user) |
    Q(player_away__name__user=request.user)
)

注意:外键是指一个对象,而不是该对象的字符串表示。因此,引用一个对象name并不是一个好名字。Profile您可能需要考虑将其重命名为profile.


推荐阅读