Страницы

Поиск по вопросам

среда, 10 июля 2019 г.

Как обработать POST запрос через admin django

Есть две модели:
class Question(models.Model): question_text = models.CharField(max_length=200) count_choice= models.IntegerField(default=0) pub_date = models.DateTimeField('date published') def __str__(self): return self.question_text
class Choice(models.Model): question = models.ForeignKey(Question, on_delete=models.CASCADE) choice_text = models.CharField(max_length=200) votes = models.IntegerField(default=0) def __str__(self): return self.choice_text
Вид из admin django
Мне необходимо, что бы при создании в колонку count_choice модели question записывалось кол-во choice, как это сделать?


Ответ

В admin.py
class QuestionAdmin(admin.ModelAdmin): def save_formset(self, request, form, formset, change): super(QuestionAdmin, self).save_formset(request, form, formset, change) obj = form.save(commit=False) choices_count = Choice.objects.filter(question=obj).count() obj.count_choice=choices_count obj.save()
Обратите внимание, что в этом варианте переопределяется метод QuestionAdmin, а не ChoiceAdmin. И срабатывает он при любых операциях, не только создании. Можно добавить проверку аргумента change, но тогда count_choice будет иметь неверное значение при удалении вариантов.

Комментариев нет:

Отправить комментарий