#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)
вы можете найти более подробную информацию здесь.