2013-08-28 2 views
0

Я хочу добавить указанный значок для каждой модели на странице индекса администратора. Я добавил атрибут с именем «picture» для каждой модели, затем я изменил /contrib/admin/sites.py, чтобы передать это имя рисунка в шаблон и проверил его и использовал его в template.html шаблоне администратора для получения результата. Интересно знать, если есть лучший способПоказать значки в администраторе Django для каждого элемента

class Product(models.Model): 
    abbr = models.CharField(max_length=20,unique=True) 
    title = models.CharField(max_length=200,unique=True) 
    owner = models.ForeignKey(UserProxy) 
    des = models.TextField(blank=True,null=True) 
    picture = 'product.png'  
    def __unicode__(self): 
     return self.abbr 
    class Meta: 
     none 

ответ

4

Что вы сделали, кажется ОК, только небольшие подсказки, которые могут сделать Ваш код немного лучше:

  1. Вместо изменения django/contrib/admin/sites.py Вы можете подкласс AdminSite класс (если вы этого не сделали).
  2. Изменить способ AdminSite.index() передать не изображение, а весь класс администратора (есть переменная model_admin, доступная в методе index()).
  3. Назначьте изображение в классах ModelAdmin, а не моделях, чтобы отделять админы от моделей.
0

Ответ от «Python Fanboy» был настолько кратким, но полезным для меня, я мог бы избежать изменений Джанго базовых классов

  1. поля изображений были перемещены в класс администратора
  2. I подкласс AdminSite в CustomAdminSite и скопировано индекс и app_index и сделали модификацию (я не знаю, есть ли лучший способ, чем копирование целого индекса и app_index как переопределение)
  3. В urls.py «admin.sites.url» заменены словами «custom_site.url» (custom_site является экземпляром CustomAdminSite)
  4. Я не хочу другой URL вместо «/admin» как «/my_admin», так что я должен использовать экземпляр CustomAdminSite для всех моих моделей даже пользователей, Группа & сайта
  5. Я используя admin_tools, теперь я потерял меню приложений

Лучше Идея или решение для моих новых проблем?

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