Django Admin: случайный ключ в TabularInline повторяется, а не случайный - PullRequest
0 голосов
/ 05 марта 2012

Я создаю генератор купонов для раздачи «получите $ 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 должен соблюдать настройку default своих собственных классов Field, и это ... для первых n , сгенерированных на стороне администратора сервера, но не для тех, кто построенпо запросу клиента.

Есть ли способ заставить Django создавать объекты на сервере и извлекать их?Придется ли мне взламывать собственную страницу, чтобы создавать встроенные коды?Или есть более разумный способ сделать это?

1 Ответ

1 голос
/ 06 марта 2012

Ссылка «Добавить еще» в строках django - это клиентский javascript.Вероятно, поэтому он принимает последнее сгенерированное значение.Если вы хотите, чтобы он возвращал случайную строку на стороне сервера, вам придется переопределить ее и реализовать собственную функцию ajax.Вы также можете создать его на стороне клиента с помощью JavaScript.

...