我有一个模特:
class student(models.Model):
First_Name = models.CharField(max_length=100,null=True)
Last_Name = models.CharField(max_length=100,null=True)
STNO = models.CharField(max_length=10,null=True)
但是在我的程序和管理面板中,我看到“学生对象”而不是名称,ID等
我尝试使用以下代码,但仍无效
def __str__(self):
return self.First_Name
def __str__(self):
return "{0} {1}".format(self.First_Name, self.Last_Name)
答案 0 :(得分:5)
我认为您使用的是Python 2x
,因此您应该尝试__unicode__
class Student(models.Model):
first_name = models.CharField(max_length=100,null=True)
last_name = models.CharField(max_length=100,null=True)
stno = models.CharField(max_length=10,null=True)
def __unicode__(self):
return "{0} {1}".format(self.first_name, self.last_name)
顺便说一下,字段名称应全部小写,使用下划线而不是camelCase。
类名通常应使用CapWords惯例。
答案 1 :(得分:2)
尝试将您的代码更改为此代码:
class Student(models.Model):
first_name = models.CharField(max_length=100,null=True)
last_name = models.CharField(max_length=100,null=True)
stno = models.CharField(max_length=10,null=True)
def __unicode__(self):
return self.first_name
然后您必须对数据库进行更改:python manage.py migrate
,python manage.py makemigration
并重新启动服务器。希望它有所帮助
答案 2 :(得分:1)
您可能想要定义 unicode 功能。此外,如果first_name和last_name可以为null,那么这实际上并不是一种保存方式。 我的建议是:
class Student(models.Model):
first_name = models.CharField(max_length=100,null=True)
fast_name = models.CharField(max_length=100,null=True)
stno = models.CharField(max_length=10,null=True)
def __unicode__(self):
first_name = self.first_name if self.first_name else u'John'
last_name = self.last_name if self.last_name else u'Doe'
return first_name + ' ' + last_name
答案 3 :(得分:0)
谢谢你们的有用答案
我尝试了以下方法,最后找到答案:
1-修复PEP0008编码标准
2-将 STR 更改为 str
3-删除数据库并创建新数据库
4-重启服务器
我也试过“ unicode ” - “ repr ” - “ smart_unicode ”但我认为原来的 str 对于像这样的例子来说是最好的事情