2015-03-04 4 views
0

Я новичок в Django и пытаюсь создать свое первое приложение. Это приложение, которое называется логотипом, и должно хранить логотипы, которые можно отобразить в файле base.html.Django - мое первое приложение, застрявшее в модели

Это мой текущий 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) Как Я установил имя объекта Logo?

2) Как установить только текущего пользователя, а не выбирать из выпадающего меню?

3) И самая большая проблема, когда я следую ссылке изображения после сохранения объекта логотипа, я получаю ошибку 404. Вот как выглядит URL-адрес: http://127.0.0.1:8000/admin/logo/logo/4/images/80s_BG_1.jpg/ - Я создал папку «images» в папке с логотипом. Но в этом случае ссылка добавляет первичный ключ «4». Зачем? И как получить загруженное изображение?

Заранее благодарен!

ответ

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) Как писали другие, у вас есть обновленные настройки, я думаю. Но мне было интересно: действительно ли картинка загружена в папку?

0

1. Вы можете написать class Meta: verbose_name = "LOGO"
на модели.

2.Вы должны добавить данные модели пользователя.

3.Maybe вы должны изменить URL медиа в настройках

+0

Благодарим вас за ответ! ** 1) ** Добавил ваш предлагаемый код к логотипу model.py - но объект Logo по-прежнему имеет то же имя.** 2) ** Как добавить данные модели пользователя? (извините, но я смущен) ** 3) ** Я добавил это в settings.py # Медиафайлы MEDIA_URL = '/ media /' URL-адрес теперь http://127.0.0.1:8000/media/images /80s_BG_5.jpg Но img все еще не отображается. – R0LL

0

1 - определить функцию __unicode__ для модели

def __unicode__(self): 
    return self.name 

2 - переопределить метод сохранения модели для установки активного пользователя или использовать Джанго сигналы

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})) 
Смежные вопросы