我有一個非常簡單的模型,其中包含以下詳細資訊:
class ExclusiveUser(models.Model):
exclusivepass = models.CharField(max_length=4, primary_key=True, editable=False)
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
date_of_birth = models.DateField(null=True)
date_of_birth = models.DateField(null=True)
age = models.IntegerField(editable=False)
def save(self,*args, **kwargs):
today = date.today()
self.exclusivepass = exclusivepass_gen(self.exclusivepass.all().count())
self.age = today.year - self.date_of_birth.year - ((today.month, today.day) < (self.date_of_birth.month, self.date_of_birth.day))
super().save(*args, **kwargs)
exclusivepass_gen是一個簡單的 utils.py 方法,用于生成唯一的exclusivepass
def exclusivepass_gen(pass_count):
pass_next = 0
pass_limit = 101
if pass_count < pass_limit:
pass_next = pass_count 1
return ('E' "{:03d}".format(pass_next))
我正在嘗試獲取表中所有物件的計數以傳遞給 Exclusivepass_gen 以生成下一個數字,但是當我這樣做時出現以下錯誤:
'ExclusiveUser' object has no attribute 'all'
如何計算模型中的所有物件以傳遞給exclusivepass_gen方法?
uj5u.com熱心網友回復:
您將在 save 方法中查詢資料庫,如下所示:
class ExclusiveUser(models.Model):
exclusivepass = models.CharField(max_length=4, primary_key=True, editable=False)
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
date_of_birth = models.DateField(null=True)
date_of_birth = models.DateField(null=True)
age = models.IntegerField(editable=False)
def save(self,*args, **kwargs):
today = date.today()
# Get qs
qs_passes = ExclusiveUser.objects.all().count()
self.exclusivepass = exclusivepass_gen(qs_passes)
self.age = today.year - self.date_of_birth.year - ((today.month, today.day) < (self.date_of_birth.month, self.date_of_birth.day))
super().save(*args, **kwargs)
您無法使用模型本身的方法獲取資料庫的記錄數,因為這僅指類的當前實體,而不是您的資料庫。
注意:如果您洗掉記錄,您最終可能會通過重復,因為計數可能會回傳相同的數量 < 兩次
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/482990.html
