【问题标题】:django model clean issuedjango模型清理问题
【发布时间】:2012-05-24 12:01:24
【问题描述】:

我正在使用多对多的两种模型,这是相关代码:

class Curso(models.Model):
    horarios = models.ManyToManyField(Horario, related_name = 'cursos')
    ...
    def clean(self):
       ...
       self.horarios.all()
    def save(self,*args,**kwargs):
        self.full_clean()
        ...

Horarios 已被定义,现在当我尝试在管理界面中创建光标时,我收到指向 self.horarios.all() 的错误:

'Curso' instance needs to have a primary key value before a many-to-many relationship can be used.

这很有意义,因为它没有被保存,所以我的问题是,我如何在当前正在保存的Curso 实例中访问horarios 的值?。

提前致谢

【问题讨论】:

  • Hoaraio 模型不会有自己的清洁方法吗?为什么需要在 Curso clean 方法中使用它?
  • @jdi horario = schedule,我需要 horario 不要同时出现在某个 Curso 实例上,这就是我验证它们的方式,遍历它们。

标签: django validation model many-to-many


【解决方案1】:

这个错误对我来说似乎很简单——在保存对象之前你根本不能调用ManyToMany

您可以重现错误:Curso().horarios

很明显,您不能对不可能存在的关系进行验证,因此只需将您的调用封装在 if self.pk

if self.pk:
   self.horarios.all()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-20
    • 2012-02-22
    • 1970-01-01
    • 2018-05-10
    • 1970-01-01
    相关资源
    最近更新 更多