python - 列出当前登录用户的对象
问题描述
我想问一下如何通过 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')
如何通过查询集访问登录用户的所有匹配项?感谢您的帮助!
解决方案
您可以列出Matche
srequest.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
.
推荐阅读
- sql - 如何在 MyBatis XML 中附加表名
- javascript - 为什么 Twitter div 表现得像按钮?
- kubernetes - kube-system 命名空间中的 pod 是如何管理的?
- python - 在python中过滤pandas数据框中的行
- html - 如何在不触发页面的情况下编写html标签
- java - Java 到 Active Directory LDAP java.net.SocketException:连接或出站已关闭
- paypal - 有没有办法授权订单直接调用paypal api
- java - 在保持索引相等的同时对多个数组列表进行排序?
- c# - C#编写一个函数来计算以对象数组为参数的平均年龄
- java - 通过 http/1.0 发送时图像加载为 base64 字符串?