我是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/')
这是它在管理中的外观:
此时的问题是:
1)如何设置徽标对象名称?
2)我如何才能设置当前用户,而不是从下拉菜单中选择?
3)最大的问题是,当我在保存徽标对象后按照图片链接时,出现404错误。 这是网址的样子: http://127.0.0.1:8000/admin/logo/logo/4/images/80s_BG_1.jpg/ - 我确实创建了一个"图像"徽标应用文件夹中的文件夹。但链接似乎添加了主键" 4"在这种情况下。为什么?以及如何存储上传的图像?
提前致谢!
答案 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)正如其他人所写,我猜你已经更新了你的设置。但我想知道:图片实际上传到文件夹了吗?