2012-01-27 33 views
0

我正在使用django 1.3,只是試圖添加一個簡單的模型(不是應用程序)到管理網站。 ,所以我曾嘗試:如何添加模型(而不是應用程序)到Django?

from django.db import models 

class UserProfile(models.Model): 
    notes = models.TextField(db_name="Notes", max_length=15) 

    def _str_(self): 
     return self.notes 

    class Admin: 
     pass 

和還試圖創建的站點根目錄,並在/靜態/管理/目錄下的文件admin.py並試圖爲它的兩個標準條目如下:

from django.contrib import admin 
from mock.models import UserProfile          

admin.site.register(UserProfile) 

from django.contrib import admin 
from mock.models import UserProfile 

class UserProfileAdmin(admin.ModelAdmin):            
    pass                     

admin.site.register(UserProfile, UserProfileAdmin) 

任何幫助,將不勝感激。非常感謝你。

+1

爲什麼不只是有一個應用程序?如果它是你想要的配置文件看一下http://pypi.python.org/pypi/django-profiles – darren 2012-01-27 22:18:19

+1

一些脫離主題的推薦:在Django中,你必須重載'__unicode__'方法,而不是'__str__'方法。我還強烈建議你閱讀完整的[Django開始教程](https://docs.djangoproject.com/en/1.3/intro/tutorial01/)(第2部分全是關於Django Admin **) – juliomalegria 2012-01-28 03:23:14

+0

@mongoose_za感謝您的配置文件信息。 – 2012-01-28 06:22:45

回答

2

不要在模型本身中定義你的Admin類,如下所示。這是從Django 1.0之前的老辦法做到的真的。我不確定你正在使用什麼教程或文檔,但它已經過時了。

class UserProfile(models.Model): 
    notes = models.TextField(db_name="Notes", max_length=15) 
    # don't do this! 
    class Admin: 
     pass 

定義UserProfileAdmin是正確的方法。 admin.py文件不應進入/static/admin/。靜態目錄用於CSS樣式表和JavaScript文件等靜態文件,而不是用於Django代碼。

至於你是否可以在不定義應用程序的情況下定義模型的問題,這不是一個好主意。很多django的部分都假設每個模型都屬於一個應用程序。例如,數據庫表名是appname_modelname

創建應用程序不會花太長時間。運行startapp命令,它將創建基本目錄和文件。

./manage.py startapp <appname> 

所有,那麼你需要做的是新的應用程序添加到INSTALLED_APPS,並創建admin.py文件。

隨着您的項目變得越來越大,在應用程序中保留模型將使它更有條理。許多Django用戶爲奇模型創建一個名爲utils(或類似的)的應用程序。

+2

多年沒有見過'class Admin'! – 2012-01-28 02:19:56

+0

@Yuji Tomita,是的,當我第一次出現時試過django,記得看過那種語法,所以它看上去對我來說是正確的......但是Alasdair是正確的,我應該在實際模型中混合它們。 – 2012-01-28 06:28:05

+0

@ChrisHarty,你的意思是你不應該。不是說它會做任何事情:) – 2012-01-28 06:32:35

相關問題