2011-08-22 68 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是的,你是對的。我會將其添加到答案中,謝謝。 –

相關問題