#python #django #python-3.x #string #object
#python #django #python-3.x #строка #объект
Вопрос:
У меня есть следующий код в models.py , обратите внимание на функцию внизу, которая стремится изменить teacher_object в панели администратора на имя пользователя преподавателя.
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 и migration 2. Вход в систему и выход из панели администратора 3. Обновление и закрытие CMD — перезапуск
Ничего из вышеперечисленного не сработало. При запуске сервера ошибок нет. Версия Python: 3.7 Последняя установка Django
Соображения: 1. Я использовал устаревшую базу данных mysql, поэтому reverse создал модели. Может ли это повлиять на что-либо? 2 Интересно, имеет ли мета-класс (внизу) какое-либо отношение к ошибке.
Я также попробовал следующее, но все равно безрезультатно:
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.
Обновить:
- Я попытался изменить порядок (классов) — будет ли это иметь значение? Но все равно объект оставался объектом
-
Я попытался добавить первичный ключ к обоим классам — это тоже не сработало
student_id = модели.Целочисленное поле (пустое = True, null=True, primary_key=True)
Комментарии:
1. вам нужен
__repr__
метод, а не__str__
2. Кто-то предположил, что это не сработало. Можете ли вы объяснить, почему? str отлично работает в любом другом приложении.
3. Это в вопросе: Python 3.7
4. Я подозреваю, что это как-то связано с тем, что я предложил (отсутствие первичного ключа или, возможно, какое-то нулевое значение), но я не вижу, что изменить или как это сделать.
5. Может ли быть так, что значение blank=true null=true вызывает ошибку? student_id = модели. Целочисленное поле (пустое = True, null=True) … что это значит?