python - order by condition Django -


i have 3 models userprofile , group :

class userprofile(models.model):         slug = models.slugfield(max_length=200)     user = models.foreignkey(user, unique =true)     professionalnetwork = models.foreignkey('subforum',null=true, blank=true)  class group(models.model):     slug = models.slugfield(max_length=200)     name = models.charfield(max_length=200)     professionalnetwork = models.foreignkey('subforum')  class subforum(models.model):    name = models.charfield(max_length=200) 

how groups ordered first 1 have same professional network specific user rest ?

i looking group.objects.all().order_by('-professionalnetwork = profile.professionalnetwork') doesn't work of course ^^

thanks you

how (similar example in docs). idea introduce field computes whether group belongs specified professional network , queryset sorted field.

subforum_id = 1  # id here need sort  sql = ''.join((     'case professionalnetwork ',     'when {} 1 '.format(subforum_id),     'else -1', )) q = group.objects.extra(select={'same_subforum': sql}) q = q.extra(order_by=['same_subforum']) 

Comments