문제

I'm using Django 1.6 with Python 2.7 and I have few related models:

# keys/models.py
class Key(models.Model):
    user = models.ForeignKey('auth.User')
    is_valid = models.BooleanField()

# entities/models.py
class Entity(models.Model):
    user = models.ForeignKey('auth.User')
    key = models.ForeignKey('keys.Key')
    active = models.BooleanField(default=False)

# profile/models.py
class Profile(models.Model):
    user = models.ForeignKey('auth.User')
    profile_id = models.PositiveIntegerField(null=True, blank=True)

Is it possible to make a single-line query which would check these conditions:

  • Key.is_valid must be True
  • Entity.active must be True
  • Profile.profile_id must not be null (or None)

The only thing I can pass to that query is request.user.

도움이 되었습니까?

해결책

if you are wanting to get Entity objects:

objects = Entity.objects.filter(active=True, 
                                key__is_valid=True, 
                                user__profile__profile_id__isnull=False)

다른 팁

I think that this is what you need:

Check entity:

entity = Entity.objects.filter(active=True, key__is_valid=True, user=request.user)

Check Profile

profile = Profile.objects.filter(user=request.user, profile_id__isnull=False)
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top