我有了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()'實際上並不執行查詢。 –