我有两个Model类定义如下:
class Program(models.Model):
name = models.CharField(max_length=100)
user_limit = models.IntegerField()
class User(models.Model):
name = models.CharField(max_length=300)
program= models.ForeignKey(Program)
我需要查询一组Program对象,其中链接到该Program的User-objects未超过user_limit。
答案 0 :(得分:0)
您希望所有少于user_limit用户的程序与之关联。为了性能,我建议你有一个user_limit和user_count。每次将用户与程序关联时,都会增加计数。这样,您可以以更高的性能执行更简单的查询。
from django.db.models import F
Program.objects.filter(user_count__lte=F("user_limit"))
http://docs.djangoproject.com/en/dev/topics/db/queries/#filters-can-reference-fields-on-the-model
答案 1 :(得分:0)
谢谢!大家帮忙。我花了一些时间在它上面并提出了这个查询:
from django.db.models import F
from django.db.models import Count
Program.objects.annotate('user_count'=Count('user')).filter(user_limit__gte=F('user_count'))