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