我有一个促销模型,其中包含促销代码和购买模型类的外键。
这是模型:
class Promotion(models.Model):
purchase = models.ForeignKey('Purchase')
promotion_code = models.CharField(max_length=20)
def promotion_code_generate(self): #returns a string based promotion code with 7 length
from django.conf import settings
import random, string
return ''.join(random.choice(string.ascii_uppercase + string.digits) for x in range(7))
class Meta:
unique_together = (("purchase", "promotion_code"),)
现在我希望我的 Promotion_code 字段对于每次购买都是唯一的,为此我添加了unique_together = (("purchase", "promotion_code"),)
到类元。通过管理面板输入新条目时效果很好,因为促销代码字段为空,我必须手动输入。
然而,我想让它变得独特,以便当购买完成时,系统应该采用该 Purcase 模型实例并自动生成通过 Promotion 模型的购买字段绑定的 Promotion 类实例。
为此,我需要两件事:
1 - 我需要我的 Promotion_code_generate 方法检查早期的促销模型实例,如果当前生成的代码在过去不存在于该交易中,则返回它,如果不重新生成,则重新尝试,直到不存在的促销代码字符串找到该购买。
2-我尝试将默认的promotion_code_ Generation分配给promotion_code字段,但是失败了:
promotion_code = models.CharField(max_length=20,default=self.promotion_code_generate())
这些如何解决呢?