Django / Отношения OnetoMany внутри одного класса
Вот мой models.py
class Scenes(models.Model):
name = models.SlugField('Scene name', max_length=60,unique=True)
record_date = models.DateTimeField('Scene date')
manager = models.ForeignKey(
settings.AUTH_USER_MODEL,
blank=True,
null=True,
on_delete=models.SET_NULL)
description = models.TextField(blank=True)
previous = models.OneToOneField(
'self',
blank=True,
null=True,
related_name='next',
on_delete=models.SET_NULL
)
Я начал с одного экземпляра: Scene1
Проблема в том, что я хочу иметь on to many choices, а не one to one, как объясняется ниже
Тем не менее, когда я меняю на
previous = models.ManyToManyField(
Затем я также получаю ошибку on_delete :
TypeError: init() получил неожиданный аргумент ключевого слова 'on_delete'
Каким будет лучший джангонский способ?
Насколько я понимаю, ваши требования таковы:
- У одной сцены может быть только одна предыдущая сцена
- У одной сцены может быть много следующих сцен
Вы почти у цели. Вместо OneToOneField используйте ForeignKey со ссылкой self:
previous = models.ForeignKey('self', related_name='next', ...)
