DP_*_*DP_ 1 python django django-models python-2.5
I'm new to Django and currently write an application, where users can enter their opinions on some topic.
Every opinion A may have zero or more opinions, which support A and several (zero or more) opinions, which refute A.
I tried to create a model for this and wrote a models.py file like this:
from django.db import models
# Create your models here.
class Opinion(models.Model):
id = models.AutoField(primary_key=True)
contents = models.CharField(max_length=256)
source = models.CharField(max_length=256)
proArguments = models.ManyToManyField(Opinion, verbose_name="Pro arguments")
contraArguments = models.ManyToManyField(Opinion, verbose_name="Contra arguments")
Run Code Online (Sandbox Code Playgroud)
When I run python manage sqlall, I get following error:
File "D:\dev\history-site\history_site\opinions\models.py", line 4, in <module>
class Opinion(models.Model):
File "D:\dev\history-site\history_site\opinions\models.py", line 8, in Opinion
proArguments = models.ManyToManyField(Opinion, verbose_name="Pro arguments")
NameError: name 'Opinion' is not defined
Run Code Online (Sandbox Code Playgroud)
How can I fix this error?
来自以下的文档ManyToManyField:
需要位置参数:与模型相关的类.这与它的工作方式完全相同
ForeignKey,包括有关递归和惰性关系的所有选项.
哪个说:
要创建递归关系 - 与自身具有多对一关系的对象 - 使用
models.ForeignKey('self').
所以:
proArguments = models.ManyToManyField("self", verbose_name="Pro arguments")
contraArguments = models.ManyToManyField("self", verbose_name="Contra arguments")
Run Code Online (Sandbox Code Playgroud)
如果参数被认为是意见,我对你的数据模型有点疑惑,但这是另一回事.