У меня есть модель OrderedList, которая предназначена для отображения списка объектов контента, заказанных пользователем. OrderedList имеет несколько атрибутов, включая сайт, к которому он принадлежит.
Объекты содержимого присоединяются к нему через класс OrderedListRow, который передается администратору OrderedList через встроенный набор форм в администраторе.
class OrderedList(GenericList):
objects = models.Manager()
published = GenericListManager()
class OrderedListRow(models.Model):
list = models.ForeignKey(OrderedList)
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveSmallIntegerField()
content_object = generic.GenericForeignKey("content_type", "object_id")
order = models.IntegerField('order', blank = True, null = True)
(OrderedList наследует поле сайта от большего резюме GenericList).
Вот моя проблема; когда пользователь сохраняет форму администратора, я хочу убедиться, что каждый объект контента, сопоставленный каждому OrderedListRow, принадлежит тому же сайту, что и OrderedList (список может принадлежать только одному сайту; объекты контента могут принадлежать нескольким).
Я могу переопределить команду clean () формы администрирования OrderedList, но она не включает встроенный набор форм, который содержит OrderedListRows, поэтому он не может получить эти данные. Я могу переопределить очистку встроенного набора форм OrderedListRows, но он не может достичь списка. Мне нужен какой-то способ в контексте проверки формы, чтобы получить доступ как к данным формы OrderedList, так и к данным формы formset, чтобы я мог проверить все сайты объектов содержимого OrderedListRow относительно сайта OrderedList и выдать ошибку проверки, если есть проблема , До сих пор я не нашел функцию, в которой содержатся очищенные данные как для OrderedRow, так и для OrderedListRows.