Я создаю купон-генератор для раздачи «получите 10 долларов США бесплатно, если вы зарегистрируетесь с помощью этого кода». База пользователей очень мала, и вероятность передачи более десяти купонов за раз маловероятна.Django Admin: Случайный ключ в TabularInline повторяющийся, не случайный
При создании новой маркетинговой кампании администратору предоставляются пять купонов в 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 должен соблюдать настройку default
своих собственных классов Field, и он делает ... для первого n, созданного сервером администратора, но не для тех, которые создаются клиентским запросом.
Есть ли способ создать Django объекты на сервере и получить их? Должен ли я взломать свою собственную страницу для создания встроенных кодов? Или есть более умный способ сделать это?
Похоже, что эти случайные купоны создаются специальным кодом, который вы написали, а не Django. Зачем использовать встроенные линии для этого? Существуют ли другие функции, кроме случайных сгенерированных купонов? Возможно, вам стоит подумать о создании настраиваемой функции ajax, которая создает и отображает только что созданные купоны. –
@ dan-klasson: Я обновил вопрос, чтобы показать разбивку. Администратор Django не честно выполняет аргумент 'default'' models.Field'. Я пытаюсь понять, что я делаю что-то не так. –