Я хочу использовать django ORM, чтобы завершить sh подсчет группы, но выбираю sql неожиданный limit 21
каждый раз. Я не хочу ограничения, почему появляется limit 21
и как я могу получить все данные?
модель:
class Company(models.Model):
company_no = models.CharField(primary_key=True, max_length=128)
name = models.CharField(max_length=128)
is_test = models.BooleanField(default=False)
class Meta:
db_table = 'company'
class User(models.Model):
symbol = models.BigIntegerField(primary_key=True)
is_test = models.BooleanField(default=False)
class Meta:
db_table = 'user'
class UserEmploy(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, db_column='symbol', to_field='symbol', related_name='employ')
company = models.ForeignKey(Company, on_delete=models.CASCADE, to_field='company_no', db_column='company_no', related_name='user_employ')
class Meta:
db_table = 'user_employ'
django код в моих представлениях:
employ_qs_exclude_test = UserEmploy.objects\
.exclude(user__is_test__in=utils.IS_TEST_MODE)\
.values("company__name") \
.annotate(employ_count=Count('user', distinct=True))\
.order_by('company')
sql log:
SELECT `company`.`name`, COUNT(DISTINCT `user_employ`.`symbol`) AS `employ_count` FROM `user_employ`
INNER JOIN `user`
ON (`user_employ`.`symbol` = `user`.`symbol`)
INNER JOIN `company`
ON (`user_employ`.`company_no` = `company`.`company_no`)
WHERE NOT (`user`.`is_test` IN (1))
GROUP BY `company`.`name`, `company`.`created_at`
ORDER BY `company`.`created_at` DESC LIMIT 21;