Django - 我的第一个应用程序,卡在模型上

Django - My first app, stuck at the model

我是 Django 的新手,正在尝试创建我的第一个应用程序。 这是一个名为 logo 的应用程序,应该存储可以在 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/')

这是它在管理员中的样子:

此时的问题是:

1)如何设置Logo对象名称?

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

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

提前致谢!

1.You可以写成class Meta: verbose_name = "LOGO"
在模型中。

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

3.Maybe你应该在设置

中修改媒体url

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}))

关于 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) 正如其他人所写,我猜你已经更新了你的设置。但是我在想:图片真的上传到文件夹了吗?