Hel*_*nar 8 django django-models
我想将"default"值设置为我的Promotion模型的promotion_code部分的随机生成的String,因为使用了code_generate函数.
以下代码的问题似乎是default=code_generate()每个服务器启动时生成此随机字符串,从而分配相同的值.我可以通过管理面板看到,每次我尝试生成一个新的促销时,它都会给我完全相同的字符串.
#generate a string, which is not already existing in the earlier Promotion instances
def code_generate():
while 1:
from django.conf import settings
import random, string
prom_code = ''.join(random.choice(string.ascii_uppercase + string.digits) for x in range(6))
try:
Promotion.objects.get(promotion_code=prom_code)
except:
return prom_code
class Promotion(models.Model):
purchase = models.ForeignKey('Purchase')
promotion_code = models.CharField(max_length=20,unique=True,default=code_generate())
Run Code Online (Sandbox Code Playgroud)
我该如何随意制作?
问候
Hel*_*nar 24
你需要传递一个callable default,而不是调用callable:
promotion_code = models.CharField(max_length=20,unique=True,default=code_generate)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3709 次 |
| 最近记录: |