Django - 我的第一个应用程序,坚持模型

时间:2015-03-04 08:29:42

标签: python django model

我是Django的新手,并试图创建我的第一个应用程序。 这是一个名为徽标的应用程序,应该存储可以在base.html中显示的徽标。

这是我目前的model.py:

from django.db import models
from django.contrib.auth.models import User

# Create your models here.

class Logo(models.Model):
    name = models.CharField(max_length=20, default = "LogoName")
    user = models.ForeignKey(User)
    is_active = models.BooleanField(("is active"), default = False)
    description = models.CharField(max_length=1000)
    date_created = models.DateField(verbose_name="Created on date", auto_now_a$
    image_field = models.FileField("Image", upload_to='images/')

这是它在管理中的外观: enter image description here

此时的问题是:

1)如何设置徽标对象名称?

2)我如何才能设置当前用户,而不是从下拉菜单中选择?

3)最大的问题是,当我在保存徽标对象后按照图片链接时,出现404错误。 这是网址的样子: http://127.0.0.1:8000/admin/logo/logo/4/images/80s_BG_1.jpg/ - 我确实创建了一个"图像"徽标应用文件夹中的文件夹。但链接似乎添加了主键" 4"在这种情况下。为什么?以及如何存储上传的图像?

提前致谢!

3 个答案:

答案 0 :(得分:0)

1.您可以写class Meta: verbose_name = "LOGO"
在模特。

2.您必须添加用户模型数据。

3.也许您应该在设置中修改媒体网址

答案 1 :(得分:0)

1 - 为模型定义__unicode__函数

def __unicode__(self):
    return self.name

2 - 覆盖模型的保存方法以设置活动用户或使用django信号

3 - 配置您的MEDIA_URL和MEDIA_ROOT,然后在主urls.py的末尾添加它以进行开发

if settings.DEBUG:
# static files (images, css, javascript, etc.)
urlpatterns += patterns('',
    (r'^media/(?P<path>.*)$', 'django.views.static.serve', {
    'document_root': settings.MEDIA_ROOT}))

答案 2 :(得分:0)

关于1)将以下内容添加到您的模型中

def __unicode__(self):
    return u'%s' % (self.name)

关于2)你必须更新你的admin.py并在那里放一些类似的东西:

class LogoAdmin(admin.ModelAdmin):

    def save_model(self, request, item, form, change):
        if not item.id:
            item.owner = request.user

        super(LogoAdmin, self).save_model(request, item, form, change)

[...]

admin.site.register(Logo, LogoAdmin)

在您的模型集中:

user = models.ForeignKey(User,editable=False)

我还没有测试过,但认为这是要走的路。

关于3)正如其他人所写,我猜你已经更新了你的设置。但我想知道:图片实际上传到文件夹了吗?