python - Django queryset on related field with multiple constraints -
suppose have following models:
class user(models.model): # ... fields class tag(models.model): # ... fields class usertag(models.model): user = models.foreignkey(user, related_name='tags') tag = models.foreignkey(tag, related_name='users') date_removed = models.datetimefield(null=true, blank=true)
now lets want users have given tag has not yet been removed (ie date_removed=none). if didn't have worry date_removed constraint, do:
user.objects.filter(tags__tag=given_tag)
but want users have given tag and have tag without date_removed on it. there easy way in django in single queryset? , assume have millions of users, getting sort of list of user ids , keeping in memory not practical.
your filter()
call can include multiple constraints:
user.objects.filter(tags__tag=given_tag, tags__date_removed=none)
see the documentation on spanning multi-valued relationships. (in particular, difference between filter(a, b)
, filter(a).filter(b)
.)
Comments
Post a Comment