【发布时间】:2019-04-12 07:52:23
【问题描述】:
我有一个模型,其外键指向另一个模型,当我尝试删除一个对象时(在本例中,存在 id=0 的对象)。
模型.py
>
class MyModel(models.Model):
example = models.ForeignKey(OtherModel,related_name='example',on_delete=models.SET_NULL ,blank=True,null=True)
class OtherModel(models.Model):
name = models.CharField(max_length=250)
外壳
>>> import project
>>> from project import models
>>> project.models.OtherModel.objects.get(id=0).delete()
Traceback (most recent call last):
File "console", line 1, in "module"
File ".../lib/python3.5/site-packages/django/db/models/base.py"
, line 890, in delete collector.collect([self], keep_parents=keep_parents)
File ".../lib/python3.5/site-packages/django/db/models/deletion.py", line 222, in collect
field.remote_field.on_delete(self, field, sub_objs, self.using)
TypeError: 'str' object is not callable
【问题讨论】:
-
鉴于两个模型在同一个文件中,上述方法永远不会起作用,因为您引用的类此时尚未定义。
-
print(project.models.OtherModel.objects.get(id=0))告诉你什么? -
不应该是id=1吗? Django ORM 从 1 开始 pk
-
好奇...
MyModel._meta.get_field('example').remote_field.on_delete返回什么,如果不是函数,返回什么类型? -
嗨,我发现了我的错误,在另一个模型中,有人在引号中写了 on_delete 选项,这被认为是“str”。谢谢!
标签: python django model foreign-keys sql-delete