我在我的Django应用两种型号:如果相关对象存在,防止更改字段?
class Survey(models.Model):
survey_type = models.CharField(max_length=1, choices=SURVEY_TYPES)
class Response(models.Model):
survey = models.ForeignKey(Survey)
response = models.TextField()
当调查的组织者已经创建了调查,他们到达指定类型。一旦出现第一个响应,我不希望组织者能够使用站点管理员更改类型(因为响应模型中的自由文本响应字段会改变含义)。
我已经看过使用验证器,但据我可以确定,他们打算在窗体上操作,而不是在要保存的对象上操作。我找不到在它们中执行数据库查询的任何支持。
我也研究过重写保存方法,但据我可以确定的是,它不是用于验证(我不希望将任何逻辑放入我的模型中)。
我会在其他框架中完成这项工作的方式,它在ORM上方引入了一些层,允许我引入业务规则。请指教 - 这里最好的做法是什么?
只是为了阐明:survey_type应该放在Survey模型上,而不是响应中。 –