【发布时间】:2010-11-01 07:25:37
【问题描述】:
我有一个模型 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 是否属于同一个站点(列表只能属于 1 个站点;内容对象可以属于多个)。
我可以覆盖 OrderedList 的管理表单的 clean(),但它不包括包含 OrderedListRows 的内联表单集,因此它无法访问该数据。我可以覆盖 OrderedListRows 的内联表单集的干净,但它无法到达列表。我需要在表单验证的上下文中使用某种方法来同时访问 OrderedList 的表单数据和表单集的表单数据,这样我就可以对照 OrderedList 的站点检查 OrderedListRow 内容对象的所有站点,并在出现问题时抛出验证错误.到目前为止,我还没有找到包含 OrderedRow 和 OrderedListRows 的清理数据的函数。
【问题讨论】:
标签: python django django-admin django-forms