我正在创建一个优惠券生成器,用于分发“如果您使用此代码注册,则可免费获得10美元的服务。”用户群非常小,并且不太可能一次传出超过10张优惠券。
在创建新的营销广告系列时,管理员会在TabularInline中获得五张优惠券,并可选择通过“添加其他优惠券”按钮创建更多优惠券。但优惠券6及以上都有与优惠券5完全相同的随机代码;看起来好像Django实际上没有从服务器请求一个新的示例对象,而只是复制它看到的最后一个。
执行此操作的代码是:
class Coupon(models.Model):
campaign = models.ForeignKey(Campaign)
code = models.CharField(max_length = 32, blank=False, null=False, default=generate_code)
redeemed_by = models.ForeignKey(User, null = True, blank = True)
其中generate_code()
是一个函数,它生成一个随机字符串。在我看来,Django的管理员应该尊重它自己的Field类的default
设置,并且它确实......用于管理服务器端生成的第一个 n ,但不是对于那些由客户要求构建的人。
有没有办法让Django在服务器上创建对象并获取它们?我是否必须破解我自己的页面来内联创建代码?或者有更聪明的方法来解决这个问题吗?
答案 0 :(得分:1)
django内联中的“添加另一个”链接是客户端javascript。这可能是为什么它需要最后生成的值。如果您希望它返回随机服务器端字符串,则必须覆盖它并实现您自己的ajax函数。您也可以使用javascript生成客户端。