Django: показать полезные данные базы данных в интерфейсе администратора? - PullRequest
3 голосов
/ 22 августа 2011

Итак, я настроил свой сайт django со следующим admin.py:

import models
from django.contrib import admin
admin.site.register(models.Comment)

который использует эту models.py:

from django.db import models
class Comment(models.Model):
    text = models.CharField(max_length=400)
    name = models.CharField(max_length=100)
    date = models.DateTimeField(auto_now = True)
    article = models.CharField(max_length=100)

Однако, когда я захожу на страницу администратора, она показывает следующее:

enter image description here Что, как правило, не очень полезно. Нажатие на каждую ссылку дает мне страницу с данными этого объекта, но я бы хотел видеть информацию для каждого объекта в этом представлении. Я смотрю на класс ModelAdmin по адресу:

https://docs.djangoproject.com/en/dev/ref/contrib/admin/

но мне не удалось обернуть вокруг него голову. Это отдельный класс модели, который нужно синхронизировать с моей «реальной» моделью? Это просто интерфейс, через который мой админский сайт получает доступ к реальной модели? Делает ли он то, что мне нужно (позволяет показывать полезные данные в интерфейсе администратора) или делает что-то еще?

Я думаю, что страница администратора Django должна иметь возможность заменить PHPMyAdmin для выполнения простых задач, таких как просмотр БД и ручное изменение отдельных объектов. Это тот случай?

Ответы [ 2 ]

5 голосов
/ 22 августа 2011

Администратор превращает ваш объект в строку, поэтому просто введите def __str__ или def __unicode__

(Как @ Mandax напомнил мне документы рекомендуем определять только __unicode__.

def __unicode__(self);
    return u"%s (%s): %s" % (self.article, self.date, self.name)
4 голосов
/ 22 августа 2011

Как сказано в документации , ModelAdmin вашей модели описывает, как администраторский раздел будет представлять вашу модель.Оно должно быть несколько синхронизировано с реальной моделью, для вас не имеет смысла отображать поля, которых нет в вашей модели, и т. Д. Вы, кажется, интересуетесь представлением списка изменений, которое имеет множество опций настройки (всеописано в документации и в учебнике ).Простое начало может быть следующим:

from django.contrib import admin

class CommentAdmin(admin.ModelAdmin):
    # define which columns displayed in changelist
    list_display = ('text', 'name', 'date', 'article')
    # add filtering by date
    list_filter = ('date',)
    # add search field 
    search_fields = ['text', 'article']

admin.site.register(Comment, CommentAdmin)

Существует множество вариантов настройки, как всегда см. В документации!Наконец, вы, конечно, можете использовать его вместо PHPMyAdmin, очень легко настроить администратор для просмотра, изменения объекта и т. Д., Насколько вы его используете, зависит только от вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...