Отслеживание обратной связи для внешнего ключа в django-reversion

Я пытаюсь понять, как отслеживать изменения для отношений внешнего ключа в Django с помощью Django-reversion.

Короче говоря, я пытаюсь смоделировать Codelist, который содержит Code, которые только принадлежат одному списку кодов. Это можно смоделировать с помощью внешнего ключа, например:

class CodeList(models.Model):
    name = models.CharField(max_length=100)

class Code(models.Model):
    value = models.PositiveIntegerField(max_length=100)
    meaning = models.CharField(max_length=100)
    codelist = models.ForeignKey(CodeList,related_name="codes")

Кроме того, единственный способ редактировать код — использовать встроенную форму на сайте администратора, доступ к которой осуществляется через его список кодов. Во всех смыслах и целях коды принадлежат спискам кодов, как и должны...

За исключением случаев, когда дело доходит до реверсии.

Я использую reversion.middleware.RevisionMiddleware для отслеживания всех изменений редактирования, так как есть некоторые формы без прав администратора для редактирования кодов.

Я бы хотел, чтобы когда я вижу историю списка кодов, она также должна меняться в кодах, но я не могу понять это в API-реверсия Django. Проблема в том, что API обеспечивает отслеживание кода и просмотр изменений в списке кодов, а не наоборот, следуя обратной связи.

Кто-нибудь знает, как это можно сделать?


person Community    schedule 11.01.2015    source источник


Ответы (1)


Плохо документировано Это очень хорошо задокументировано, я просто не смог найти, но вы можете просто добавить обратное отношение в качестве следующего поля:

reversion.register(CodeList, follow=["codes"])
person Community    schedule 11.01.2015
comment
Любая идея о том, как получить доступ к информации для FK? versions[1].field_dict.items() предоставит мне все поля, но не перечислит поле FK. - person Rileywiley; 26.06.2016