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) 正如其他人所写,我猜你已经更新了你的设置。但是我在想:图片真的上传到文件夹了吗?
我是 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你应该在设置
中修改媒体url1 - 为模型定义 __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) 正如其他人所写,我猜你已经更新了你的设置。但是我在想:图片真的上传到文件夹了吗?