Джанго-хрустящие формы загрузки - PullRequest
0 голосов
/ 03 апреля 2012

Вчера я задал этот вопрос .

Затем я нашел этот фрагмент:

models.py

from django.db import models
from app.extra import ContentTypeRestrictedFileField

class upload(models.Model):
    """ upload """
    name = models.CharField(max_length=100)
    description = models.CharField(max_length=250)
    file = ContentTypeRestrictedFileField(
        upload_to='/media/videos,'
        content_types=['video/avi', 'video/mp4', 'video/3gp', 'video/wmp', 'video/flv', 'video/mov'],
        max_upload_size=104857600
    )
    created = models.DateTimeField('created', auto_now_add=True)
    modified = models.DateTimeField('modified', auto_now=True)

    def __unicode__(self):
        return self.name

form.py

from django.db.models import FileField
from django.forms import forms
from django.template.defaultfilters import filesizeformat
from django.utils.translation import ugettext_lazy as _

class ContentTypeRestrictedFileField(FileField):
    """
    Same as FileField, but you can specify:
        * content_types - list containing allowed content_types. Example: ['application/pdf', 'image/jpeg']
        * max_upload_size - a number indicating the maximum file size allowed for upload.
            2.5MB - 2621440
            5MB - 5242880
            10MB - 10485760
            20MB - 20971520
            50MB - 5242880
            100MB 104857600
            250MB - 214958080
            500MB - 429916160
    """
    def __init__(self, content_types=None,max_upload_size=104857600, **kwargs):
        self.content_types = kwargs.pop('video/avi', 'video/mp4', 'video/3gp', 'video/wmp', 'video/flv', 'video/mov')
        self.max_upload_size = max_upload_size

        super(ContentTypeRestrictedFileField, self).__init__(**kwargs)


    def clean(self, *args, **kwargs):        
        data = super(ContentTypeRestrictedFileField, self).clean(*args, **kwargs)

        file = data.file
        try:
            content_type = file.content_type
            if content_type in self.content_types:
                if file._size > self.max_upload_size:
                    raise forms.ValidationError(_('Please keep filesize under %s. Current filesize %s') % (filesizeformat(self.max_upload_size), filesizeformat(file._size)))
            else:
                raise forms.ValidationError(_('Filetype not supported.'))
        except AttributeError:
            pass        

        return data

        from south.modelsinspector import add_introspection_rules
        add_introspection_rules([], ["^app\.extra\.ContentTypeRestrictedFileField"])

и добавьте эту строку settings.py

FILE_UPLOAD_MAX_MEMORY_SIZE = 157286400 # 157286400 bytes = 150 MB

Я только что узнал о приложении под названием Джанго-хрустящие формы . Вам дают этот фрагмент для создания этой формы

Мой вопрос:

Можно ли объединить мой фрагмент с django-crispy, чтобы создать форму, которая выглядит следующим образом? Я знаю, что должен использовать django-tagging .

enter image description here

1 Ответ

0 голосов
/ 06 апреля 2012

Посмотрите, что селектор CSS django дает форму. Затем используйте таблицу стилей, чтобы изменить ее внешний вид. Вы даже можете установить селектор самостоятельно, см. Документацию для получения дополнительной информации.

...