2015-12-18 2 views
0

у меня есть модель:Джанго Моделя Возвращаемое значение

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) 

Однако в моей программе и админку я вижу «Student Object» вместо имени, идентификатора и т.д.

я попытался следующие коды, но до сих пор не работая

def __str__(self): 
    return self.First_Name 

def __str__(self): 
    return "{0} {1}".format(self.First_Name, self.Last_Name) 
+2

не должен быть назван именем ученика класса в верхнем регистре и именами полей в нижнем регистре это общее соглашение. –

+2

, если вы используете python 2, вам нужно определить '__unicode__' вместо' __str__' – Pynchia

+0

что ??? : | если один из них является верхним, а другой - программой с нижним регистром, не работает @PrashantShukla –

ответ

0

спасибо ребята за ваши полезные ответы

я попытался следующие пути и, наконец, найти ответ:

1- исправить PEP0008 стандарты кодирования

2- изменение СТР до str

3- Удалить базу данных и создать новый

4 рестарта

также я попытался "Юникода" - "Repr" - "smart_unicode", но я думаю, что оригинал ул является лучше всего для таких примеров

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.

+0

спасибо, но все еще у меня проблема –

+1

@ArashHatami должен быть работой. Каково ваше исключение? –

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 и перезагрузки сервера. Надеюсь, это поможет

+0

Почему я должен изменить имя класса в верхний регистр ??? и имена в нижнем регистре –

+3

Его стандарт кодирования Pep8, его не нужно, его просто то, что будет использовать большинство всего кода Python, который вы найдете. – Sayse

+0

Благодарим вас за информацию, но у меня есть большая программа со многими строками кода .... если я изменю один из них Позже у меня были проблемы. –

1

Возможно, вы захотите определить функцию unicode. Кроме того, это не лучший способ сделать это, если first_name и last_name могут быть пустыми. Мое предложение было бы:

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 
+0

"def __unicode __ (self)" вне класса? –

+1

извините, jsut обновил мой ответ –

+0

нет ..... не работает –

Смежные вопросы