Django Admin:TabularInline中的随机键重复,不是随机的

时间:2012-03-05 18:29:52

标签: django django-admin

我正在创建一个优惠券生成器,用于分发“如果您使用此代码注册,则可免费获得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在服务器上创建对象并获取它们?我是否必须破解我自己的页面来内联创建代码?或者有更聪明的方法来解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

django内联中的“添加另一个”链接是客户端javascript。这可能是为什么它需要最后生成的值。如果您希望它返回随机服务器端字符串,则必须覆盖它并实现您自己的ajax函数。您也可以使用javascript生成客户端。