2012-01-27 46 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

相关问题