MyNameIsDice
@MyNameIsDice

Можно ли сделать модели относительно зависимыми друг от друга с обеих сторон?

Хотелось бы узнать можно ли сделать в этих моделях так что бы в Test дефолтом указывалось кол-во Question которые к нему привязаны через ForeignKey. Ему вручную изменяться не нужно поэтому и хотелось бы сделать автоматические изменения.

from django.contrib.auth.models import User
from django.utils.timezone import now
from django.db import models


class Test(models.Model):
    name = models.CharField(max_length=40)
    description = models.CharField(max_length=200)
    pub_date = models.DateField(default=now)
    questions_amount = models.SmallIntegerField(default=0)

    def __str__(self):
        return self.name


class Question(models.Model):
    test = models.ForeignKey(Test, on_delete=models.CASCADE)
    text = models.CharField(max_length=200)
    question_num = models.SmallIntegerField(default=0)

    def __str__(self):
        return self.text


class Answer(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    text = models.CharField(max_length=100)
    is_correct = models.BooleanField(default=False)

    def __str__(self):
        return self.text
  • Вопрос задан
  • 54 просмотра
Решения вопроса 1
@javedimka
Хочу сока
Конечно можно сделать, переопредели метод save() на модели Question таким образом, чтобы перед сохранением он получал связанный объект Test и инкрементировал поле questions_amount .

А лучше забудь эту идею и сделай по-нормальному, через аггрегации:
https://docs.djangoproject.com/en/dev/topics/db/ag...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы