Использование метода __str__ в Django для превращения объекта в строку - не работает - PullRequest
0 голосов
/ 12 апреля 2019

У меня есть следующий код в models.py, обратите внимание на функцию внизу, которая вместо этого меняет имя учителя_объекта в панели администратора на имя пользователя учителя.

class Teachers(models.Model):
    email = models.CharField(max_length=50)
    school_pin = models.CharField(max_length=11)
    username = models.CharField(max_length=50)
    pass_field = models.CharField(db_column='pass', max_length=100)  # Field renamed because it was a Python reserved word.
    fname = models.CharField(max_length=50, blank=True, null=True)
    lname = models.CharField(max_length=50, blank=True, null=True)
    oauth_provider = models.CharField(max_length=50, blank=True, null=True)
    oauth_uid = models.CharField(max_length=100, blank=True, null=True)
    verified = models.IntegerField(blank=True, null=True)
    verificationcode = models.CharField(db_column='verificationCode', max_length=100, blank=True, null=True)  # Field name made lowercase.
    school_name = models.CharField(max_length=255, blank=True, null=True)
    designation = models.CharField(max_length=255, blank=True, null=True)
    date = models.DateField(blank=True, null=True)
    membershipid = models.IntegerField(blank=True, null=True)

    def __str__(self):
        return self.username

    class Meta:
        managed = False
        db_table = 'teachers'

Панель администратора по-прежнемупоказывает учителей, перечисленных как объект учителя (1275) (и так далее).

Я пробовал следующее: 1. Запуск команд makemigrations и migrate 2. Вход и выход из административной панели 3. Обновление и закрытие CMD - перезапуск

Ничего из вышеперечисленного не имеетработал.Нет ошибок при запуске сервера.Версия Python: 3.7 Последняя установка Django

Соображения: 1. Я использовал унаследованную базу данных mysql, поэтому создал модели в обратном порядке.Может ли это повлиять на что-нибудь?2 Интересно, имеет ли отношение к ошибке класс Meta (внизу).

Я также попробовал следующее, но все еще безрезультатно:

def __str__(self):
    return '%s %s' %(self.username,self.email)

Для справки и вв данном случае это уместно, вот мой admin.py

from django.contrib import admin

# Register your models here.

from django.contrib import admin
from .models import Teachers
from .models import TeacherPins
admin.site.register(Teachers)
admin.site.register(TeacherPins)

Наконец, поскольку это модель, сгенерированная в обратном порядке (из устаревшего mysql), Django предоставил этот совет в начале файла models.py.Опять же, может ли это (не выполняется, например, без первичного ключа и т. Д.) Иметь отношение к неработающему методу str ?

# This is an auto-generated Django model module.
# You'll have to do the following manually to clean this up:
#   * Rearrange models' order
#   * Make sure each model has one field with primary_key=True
#   * Make sure each ForeignKey has `on_delete` set to the desired behavior.
#   * Remove `managed = False` lines if you wish to allow Django to create, modify, and delete the table
# Feel free to rename the models, but don't rename db_table values or field names.

Обновление:

  1. Я попытался изменить порядок (классов) - будет ли это иметь значение?Но все же объект оставался объектом
  2. Я попытался добавить первичный ключ в оба класса - это тоже не сработало

    student_id = models.IntegerField (blank = True, null =True, primary_key = True)

...