我在Django中的链接和术语之间存在多对多关系,但在尝试检查链接和术语之间是否存在关系时,我在方法上得到一个未定义的变量。
def create_models(my_term, link):
obj, created = WikifyProjectTerms.objects.get_or_create(term = my_term)
我的模特为:
class WikifyProjectTerms(models.Model):
id = models.IntegerField(primary_key=True) # AutoField?
term = models.CharField(max_length=100)
class WikifyProjectLinks(models.Model):
id = models.IntegerField(primary_key=True) # AutoField?
links = models.CharField(max_length=100)
class WikifyProjectLinksTerms(models.Model):
id = models.IntegerField(primary_key=True) # AutoField?
links = models.ForeignKey(WikifyProjectLinks)
terms = models.ForeignKey('WikifyProjectTerms')
我已经粘贴了django文档https://docs.djangoproject.com/en/1.4/ref/models/querysets/#get-or-create中的那一行(并对其进行了定制)但是Eclipse坚持认为它对于我的任何模型都不存在。 update_or_create()
方法也不存在。
任何想法将不胜感激!
这不是运行时错误,这是Eclipse的抱怨:
答案 0 :(得分:2)
Python,正如我之前曾经说过一次或两次,不是Java。
使其不是Java的一个原因是类属性是动态定义的。除了在运行时,并不总是能够确定对象具有哪些属性。
Eclipse或尝试对代码进行静态分析的任何其他IDE 不可靠作为指导类在哪些属性上存在或不存在。
这就是为什么许多Python程序员更喜欢更简单的文本编辑器 - 从vim到SublimeText - 而不是IDE。不要忘记,您可以使用Python shell来探索对象,例如dir()
命令,它将显示对象实际具有的内容,而不是IDE认为它具有的内容。