2011-08-22 66 views
2

因此,我建立了我的Django的网站具有以下admin.py:Django:在管理界面显示有用的数据库数据?

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 Admin页面应该能够替代PHPMyAdmin来完成简单的任务,比如浏览数据库和手动修改单个对象。是这样吗?

回答

3

正如它在documentation中说,您的模型的ModelAdmin描述了管理部分将如何代表您的模型。它确实需要与实际模型同步,您显示模型中不存在的字段等是没有意义的。您似乎对变更列表视图感兴趣,变更列表视图有许多自定义选项(全部描述在文档中,并在tutorial)。一个简单的开始可能是:

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,它很容易设置管理员浏览,修改对象等,你得到多少用途取决于你。

5

管理员将你的对象转换成字符串,所以只是把def __str__def __unicode__

(如@Mandax提醒我docs建议只定义__unicode__。)

def __unicode__(self); 
    return u"%s (%s): %s" % (self.article, self.date, self.name) 
+0

我不知道你能做到这一点;谢谢! –

+1

它确实是首选(正如文档所说)只是定义'__unicode__',并让Django担心编码。 –

+0

@mandax是的,你是对的。我会将其添加到答案中,谢谢。 –

相关问题