Как администратор Django определяет, какие поля отображаются

#django #django-models #django-admin

#django #django-модели #django-admin

Вопрос:

У меня есть 3 поля в моем Country классе в models.py . Затем я использовал следующий код в admin.py :

 from jobs.models import *
from django.contrib import admin

admin.site.register(Country)
admin.site.register(City)
  

После запуска manage.py syncdb я вошел в систему под именем администратора и добавил страну. При сохранении не отображается собственное название страны, а скорее отображается «Объект Country» в списке и выпадающих списках, где он добавлен в качестве внешнего ключа. Как Django определяет, какое поле должно отображаться в списках и полях выбора?

Ответ №1:

Все зависит от вашего __unicode__ метода. Это определяет, что отображается для каждого экземпляра модели в списках администратора или ссылках на внешний ключ.

 class Mymodel(Model)
    field1 = CharField()
    field3 = CharField()
    field3 = CharField()

    def __unicode__(self):
        return self.field1

>>> Mymodel.objects.get(pk=1)
"contents of field1 that will show up for all related fields in admin"
  

Ответ №2:

попробуйте изменить __unicode__ метод модели. это самый простой способ.

если вам нужно больше столбцов, вам нужно создать класс, наследуемый от ModelAdmin и определить list_display свойство. Затем вы можете связать это следующим образом:

 admin.site.register(Country, CountryAdmin)
admin.site.register(City, CityAdmin)
  

вы можете найти более подробную информацию здесь.