【发布时间】:2012-09-22 17:35:15
【问题描述】:
这是models.py中的代码
class Package(models.Model):
name=models.CharField(max_length=300)
version=models.CharField(max_length=300,blank=True)
home_page=models.URLField(blank=True)
summary=models.TextField()
description=models.TextField(blank=True)
keywords=models.TextField(blank=True)
categories=models.ManyToManyField(Category,related_name='packages')
class Category(models.Model):
topic=models.ForeignKey(Package, related_name="categories")
当我尝试同步数据库时,它显示“未定义 NameError 类别”我尝试先放置类类别,然后再放置包,这次它显示“未定义 NameError 名称包”。
请帮我解决这个问题。
编辑: 感谢大家的帮助,从我对数据库中的知识知之甚少的情况来看,这里的教程似乎是错误的http://toys.jacobian.org/presentations/2007/pycon/tutorials/beginning/ 他将 Packages 中的字段 categories 定义为多对多,Category topic 中的字段定义为 Package 的外键,但外键是多对一的关系,因此实现存在缺陷。 我认为 django 试图以它的方式告诉它“字段'主题'的访问器与 m2m 字段'Package.categories'发生冲突。”字段“主题”的反向查询名称与 m2m 字段“”冲突 那是对的吗?
【问题讨论】:
-
这似乎是一个错字:ForeignKey 应该指向主题模型,而不是包,这就是它被称为
topic的原因。但是你为什么要看一个五年前的幻灯片呢?里面的很多东西都过时了。 -
@DanielRoseman 您能否提供一些好的教程的链接。我在这里试过 [link]code.djangoproject.com/wiki/Tutorials[link] 大多数教程看起来晦涩难懂。