我有了20的计数域用户模式:如何权衡寻呼策略的数据查询集计数?
class User(models.Model):
username = models.CharField(max_length=16)
password = models.CharField(max_length=40) # sha1
real_name = models.CharField(max_length=12, null=True,blank=True)
phone = models.CharField(max_length=11)
email = models.EmailField(blank=True, null=True)
qq = models.CharField(max_length=10, null=True, blank=True)
address = models.CharField(max_length=64, blank=True, null=True)
id_card = models.CharField(blank=True, null=True, max_length=18, validators=[RegexValidator(regex='^.{18}$', message='身份证长度必须为18', code='nomatch')])
id_card_img_front = models.CharField(max_length=256, blank=True, null=True)
id_card_img_back = models.CharField(max_length=256, blank=True, null=True)
nickname = models.CharField(max_length=16, blank=True, null=True)
profile = models.CharField(max_length=256, blank=True, null=True, default=' ')
usertype = models.ForeignKey(to='UserType', default=1, blank=True)
user_c_type = models.CharField(max_length=4, null=True)
fixed_phone = models.CharField(max_length=16, null=True)
fax = models.CharField(max_length=16, null=True)
main_bussiness = models.CharField(max_length=16, null=True)
main_industry = models.CharField(max_length=16, null=True)
company_name = models.CharField(max_length=32, null=True)
company_address = models.CharField(max_length=32, null=True)
province = models.CharField(max_length=32, null=True, default="--省--")
town = models.CharField(max_length=32, null=True, default="--市--") # 省市县
country_level = models.CharField(max_length=32, null=True, default="--县--")
ctime = models.DateTimeField(auto_now_add=True)
uptime = models.DateTimeField(auto_now=True)
status = models.CharField(max_length=1, null=True, default=1)
而在我的Django项目,我想使用分页程序实现对用户列表分页。
因为我在我的数据库中的用户数不超过10,000行。
那么,我是否可以让我的数据库中的所有用户再分页?
user_all = models.User.objects.all()
paginator = Paginator(user_all, 10)
try:
user_list_page = paginator.page(page_number)
except PageNotAnInteger:
user_list_page = paginator.page(1)
except EmptyPage:
user_list_page = paginator.page(paginator.num_pages)
而且我不知道这种方法(查询用户数据的所有行)是否效率低下。
或者,如何从数据库中查询用户的查询余额?对于一个积极的限制数字(在计数我应该改变分页方法,少于我可以使用我的页面方法)?
或者有更好的方法来为我的用户分页吗?
目前还不清楚你认为这是错误的。这就是你应该如何使用paginators。它不会提取用户的所有行。 –
您的意思是使用我的方法是正确和有效的吗?因为我认为使用'models.User.objects.all()'会从我的数据库中获取所有的用户数据。你的意思是它只获取10(page_size)行用户数据?如果像你说的那样,Paginator如何实现这一点? – aircraft
查询集很懒; 'User.objects.all()'实际上并不执行查询。 –