【发布时间】:2012-10-05 23:58:50
【问题描述】:
我有以下型号:
class Computer(models.Model):
...
class Demo(models.Model):
computers = models.ManyToManyField(Computer)
...
class Scenario(models.Model):
demo = models.ForeignKey(Demo)
...
class Setting(models.Model):
scenario = models.ForeignKey(Scenario)
computer = models.ForeignKey(Computer)
基本上一个演示使用多台计算机。一个演示也有多个场景。每个场景都有一些设置,每个设置都配置一台计算机。
我的问题是在使用 django Admin 站点添加场景时,用户在下拉列表中选择了一个演示并为某些计算机配置了设置后,我需要验证设置中的计算机是否确实在演示。
我翻遍了 django 文档、在线网站,并尝试了所有我能想到的方法,但仍然无法完成这项工作。
我无法使用自定义表单验证,因为虽然我可以从场景表单中的 clean_data 获取“演示”对象,但我似乎无法访问随表单提交的设置。如果我通过覆盖“干净”来进行模型级别验证,那么只有在我更改场景时才有效,而不是在我添加新场景时有效,因为 computer_set 对于新场景是空的。
非常感谢任何帮助。
【问题讨论】:
标签: django forms validation foreign-key-relationship