繁体   English   中英

使用Django映射的数据库查询

[英]DB Query using Django mapping

我有两个定义如下的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)

我需要查询程序对象集,其中链接到该程序的用户对象没有超过user_limit。

您希望所有与用户关联的程序少于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-模型领域

谢谢! 大家的帮助。 我花了更多时间在查询上:

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'))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM