Django模型的回报值

时间:2015-12-18 09:17:07

标签: python django

我有一个模特:

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)

4 个答案:

答案 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 migratepython 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 对于像这样的例子来说是最好的事情