如何解决将元素添加到数据库时发生 NameError
我一次又一次地收到此错误,我不知道为什么我尝试了所有方法但似乎不起作用, 我正在尝试将元素添加到我的主页中!
from django.db import models
class Todo(models.Model):
name = models.CharField(max_length = 200,unique = False)
def __str__(self):
return self.name
class Item(models.Model):
todolist = models.ForeignKey(Todo,on_delete = models.CASCADE)
text = models.CharField(max_length = 300)
complete = models.NullBooleanField()
def __str__(self):
return self.text
我的文本是在那个代码中定义的,但我不明白为什么我会收到这个错误,我尝试了一切
In [35]: lt.item_set.create(text = "moon",complete = False)
Out[35]: ---------------------------------------------------------------------------
NameError Traceback (most recent call last)
~\anaconda3\lib\site-packages\IPython\core\formatters.py in __call__(self,obj)
700 type_pprinters=self.type_printers,701 deferred_pprinters=self.deferred_printers)
--> 702 printer.pretty(obj)
703 printer.flush()
704 return stream.getvalue()
~\anaconda3\lib\site-packages\IPython\lib\pretty.py in pretty(self,obj)
392 if cls is not object \
393 and callable(cls.__dict__.get('__repr__')):
--> 394 return _repr_pprint(obj,self,cycle)
395
396 return _default_pprint(obj,cycle)
~\anaconda3\lib\site-packages\IPython\lib\pretty.py in _repr_pprint(obj,p,cycle)
698 """A pprint that just redirects to the normal repr function."""
699 # Find newlines and replace them with p.break_()
--> 700 output = repr(obj)
701 lines = output.splitlines()
702 with p.group():
~\anaconda3\lib\site-packages\django\db\models\base.py in __repr__(self)
519
520 def __repr__(self):
--> 521 return '<%s: %s>' % (self.__class__.__name__,self)
522
523 def __str__(self):
~\Desktop\Django\Roman\Apple\funsite\apple\models.py in __str__(self)
16
17
---> 18 def __str__(self):
19 try:
20 return self.text
NameError: name 'text' is not defined
In [36]: lt.item_set.create(text = "moon",complete = False)
Out[36]: ---------------------------------------------------------------------------
NameError Traceback (most recent call last)
~\anaconda3\lib\site-packages\IPython\core\formatters.py in __call__(self,self)
522
523 def __str__(self):
~\Desktop\Django\Roman\Apple\funsite\apple\models.py in __str__(self)
16
17
---> 18 def __str__(self):
19 return self.text
NameError: name 'text' is not defined
我不明白为什么我会收到那个错误
解决方法
您是否进行了任何迁移并运行它们以创建字段 text
?如果没有,那么您需要使用 ./manage.py makemigrations
./manage.py migrate
运行它们。
- 首先,在您的终端中,
cd
到您的项目文件夹并激活 venv - 在
models.py
中修改代码后,运行pyhton manage.py makemigrations
[如果您已经执行了该命令,您将在该 apps migrations 文件夹 中看到一个文件,例如0001_initial.py
] - 然后运行
python manage.py migrate
如果您的问题仍然存在,请提供更多详细信息。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。