Reputation: 305
I would like to ask how I could list all objects of logged current user via class based view in django.
I have two apps in the project. One is called users and the other one is badminton.
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)
badminton/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')
How I can access all matches of logged user via queryset? Thank you for your help!
Upvotes: 1
Views: 28
Reputation: 476594
You can list Matche
s for which the request.user
has as Player
object player_home
and/or player_away
for that match with:
from django.db.models import Q
Match.objects.filter(
Q(player_home__name__user=request.user) |
Q(player_away__name__user=request.user)
)
Note: A foreign key refers to an object, not to the string representation of that object. Therefore
name
is not really a good name to refer to aProfile
object. You might want to consider renaming it toprofile
.
Upvotes: 1