Я хочу смоделировать статью с изменениями в Django:
В моей статье есть следующее: models.py:
class Article(models.Model):
title = models.CharField(blank=False, max_length=80)
slug = models.SlugField(max_length=80)
def __unicode__(self):
return self.title
class ArticleRevision(models.Model):
article = models.ForeignKey(Article)
revision_nr = models.PositiveSmallIntegerField(blank=True, null=True)
body = models.TextField(blank=False)
В модели artlcle я хочу иметь 2 прямые ссылки на ревизию - одна будет указывать на опубликованную ревизию, а другая - на ревизию, которая активно редактируется. Однако из того, что я понимаю, ссылки OneToOne и ForeignKey генерируют обратную ссылку на другой стороне ссылки на модель, поэтому мой вопрос состоит в том, как создать однонаправленную ссылку "один к одному" в Django?
Существуют ли какие-то особые заклинания для этого или мне нужно подделать его, включив состояние в ревизию и пользовательские реализации полей, которые запрашивают ревизию в определенном состоянии?
Редактировать: Полагаю, я плохо объяснил свои намерения. Давайте попробуем это на более высоком уровне абстракции:
Мое первоначальное намерение состояло в том, чтобы реализовать своего рода пересмотренную модель статьи, в которой каждая статья может иметь несколько ревизий, где одна из этих ревизий может быть «опубликована», а другая - активно редактироваться.
Это означает, что статья будет иметь отношение один-ко-многим к ревизиям (представленным ForeignKey(Article)
ссылка в ArticleRevision класс) и две односторонние ссылки из статьи на ревизию: published_revision
и edited_revision
.
Мой вопрос в основном, как я могу смоделировать это с помощью ORM Джанго.