LINUX.ORG.RU

Прикрутить форму к админ-панели

 ,


0

1

Доброго времени суток! Прошу помощи прикрутить форму загрузки медиаконтента в админ-панели. Дано:

Модель контента

class MediaItem(models.Model):
    video = VideoField( upload_to = upload_to,
                        width_field = 'video_width', height_field = 'video_height',
                        rotation_field = 'video_rotation',
                        mimetype_field = 'video_mimetype',
                        duration_field = 'video_duration',
                        thumbnail_field = 'video_thumbnail')
    video_width = models.IntegerField(null = True, blank = True)
    video_height = models.IntegerField(null = True, blank = True)
    video_rotation = models.FloatField(null = True, blank = True)
    video_mimetype = models.CharField(max_length = 32, null = True, blank = True)
    video_duration = models.IntegerField(null = True, blank = True)
    video_thumbnail = models.ImageField(null = True, blank = True)
    video_mp4 = VideoSpecField(source = 'video', format = 'mp4')
    video_ogg = VideoSpecField(source = 'video', format = 'ogg')
    video_webm = VideoSpecField(source='video', format='webm')
 
    def __unicode__(self):
        return self.video.name
 
    def video_specs_generated(self):
        if self.video_mp4.generated() and self.video_ogg.generated():
            return True
 
        return False

Форма

from videokit.forms import VideoField
 
class MediaItemCreateForm(forms.Form):
    video = VideoField()

Представление

def item_create(request):
    template = 'app/item_create.html'
 
    item_create_form = MediaItemCreateForm()
 
    if request.method == 'POST':
        item_create_form = MediaItemCreateForm(request.POST, request.FILES)
 
        if item_create_form.is_valid():
            video = request.FILES.get('video', None)
 
            if video:
                media_item = MediaItem(video = video)
                media_item.save()
 
                media_item.video_webm.generate()
 
                return HttpResponseRedirect(reverse('list'))
 
    context = {
        'item_create_form' : item_create_form,
    }
 
    return render(request, template, context)

Ну и дефолтный класс в admin.py

class MediaItemAdmin(admin.ModelAdmin):
    pass
 
admin.site.register(MediaItem, MediaItemAdmin)

Вопрос заключается в следующем: что написать в дефолтном классе админки чтоб работала загрузка файла через админку а не с сайта.

★★★

Неважный код, нарушающий PEP-8, и написанный, похоже, лет 15 назад. Кто сейчас использует __unicode__ вместо __str__?..

Без кода поля VideoField и версии Django на вопрос ответить невозможно.

Обычные поля с файлами работают в админке автоматически, не нужно ничего делать специально.

emorozov
()
Последнее исправление: emorozov (всего исправлений: 1)
Ответ на: комментарий от xaTa

Да, увидел в ленте технического раздела вопрос типа «у меня есть готовый движок, доработайте к нему фичу» и решил сообщить что раздел не тот

firkax ★★★★★
()
Ответ на: комментарий от firkax

Ты где то увидел тут техзадание? яж задал вопрос, помоему большинство пользователей для этого сюда и приходят. А то как ты трактуешь мой пост мне глубоко п@хуй сообственно как и на твое мнение.

xaTa ★★★
() автор топика

Переноси item_create в MediaItemAdmin, в этом же классе сделай урл в через метод get_urls. И декораторы доступа поставь, чтобы ни кто не назагружал тебе чего не нужно.

dicos ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.