以下是我目前遇到的问题:
__str__()
函数,如下所示:
from django.db import models
class Question(models.Model):
def __str__(self):
return self.question_text`
这就是我的models.py看起来的样子:
from django.db import models
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
class Choice(models.Model):
question = models.ForeignKey(Question)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
我收到的错误如下:
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "C:\Python34\lib\site-packages\django\db\models\base.py", line 117, in __new__
kwargs = {"app_label": package_components[app_label_index]}
IndexError: list index out of range
任何人都有任何想法?我是django的总菜鸟,而且我不能100%确定base.py应该在这里做什么。
可以在此处找到Base.py:https://github.com/django/django/blob/master/django/db/models/base.py
答案 0 :(得分:1)
你快到了
你需要在models.py文件中的Question类中添加def __str__()
方法,如。
你的models.py应如下所示:
from django.db import models
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
def __str__(self):
return self.question_text
class Choice(models.Model):
question = models.ForeignKey(Question)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
def __str__(self):
return self.choice_text #or whatever u want here, i just guessed u wanted choice text
你实际在做的是覆盖你正在进行子类化的类中的内置dunder方法。 models.Model
本身已经有__str__
方法,您只是在Question
版models.Model
PS。如果你在python 2上,方法名称应该是__unicode__
而不是__str__
PPS。一点OOP语言:如果一个&#34;功能&#34;是一个类的一部分,它被称为&#34;方法&#34;