Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python名称错误(Django)_Python_Django_Nameerror - Fatal编程技术网

Python名称错误(Django)

Python名称错误(Django),python,django,nameerror,Python,Django,Nameerror,这是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)

这是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")
当我尝试syncdb时,它说“NameError类别未定义”,我尝试将类类别放在第一位,然后将包放在第二位,这次它说“NameError名称包未定义”

请帮我解决这个问题

编辑: 感谢大家的帮助,从我对数据库的了解来看,这里的教程似乎是错误的 他将包中的字段类别定义为多对多,将类别主题中的字段定义为包的外键,但外键是多对一关系,因此实现存在缺陷。 我认为django试图以“字段'topic'的访问器与m2m字段'Package.categories'冲突”的方式告诉它。“字段'topic'的反向查询名称与m2m字段冲突” 对吗?


定义
类别时添加引号
ManyToManyField
。 改为:

categories=models.ManyToManyField('Category',related_name='packages')

原因:
Category
在您添加该字段时未定义,因此需要在其周围添加引号,以便django稍后解决该问题。

我是django新手,我按照您所说的做了。这些是确切的更改
类类别(models.Model):主题=models.ForeignKey('Package',related_name='categories'))
这在类Package`categories=models.ManyToManyField('Category',related_name='packages'中)`这是错误`error:一个或多个模型未验证:packages.category:字段'topic'的访问器与m2m字段'Package.categories'冲突。在'topic'的定义中添加相关的\u name参数。packages.category:字段'topic'的反向查询名称与m2m字段'Package.categories'冲突。添加相关的\u name参数“我什么都不懂,我是Django的新手。你可以更改
topic=models.ForeignKey('Package',related_name='topics'))
。当您的代码试图设置反向关系时,名称会发生冲突。@JosyulaKrishna您可能想在Thank读取它。当不使用相关的\u name参数时,它会工作。但在使用相关的\u name时出现此错误
错误:一个或多个模型未验证:packages.category:字段“topic”的访问者与m冲突2m字段“Package.categories”。在“topic”的定义中添加一个相关的\u name参数。packages.categories:字段“topic”的反向查询名称与m2m字段“Package.categories”冲突。在“topic”的定义中添加一个相关的\u name参数。
关系字段使用不同的
相关的\u名称
,或者使其中一个字段成为单向的。这看起来像是输入错误:外键应该指向主题模型,而不是包,这就是为什么它被称为
主题
。但是为什么你要看一个五年前的幻灯片呢?里面很多东西都过时了。@DanielRoseman请提供一些好的教程的链接。我在这里尝试了[link]大多数教程看起来都很晦涩和有缺陷。
categories=models.ManyToManyField('Category',related_name='packages')