2012-04-02 10 views
0

Gestern fragte ich diese question.Django-crispy Upload-Formulare

Ich fand dann diese Schnipsel:

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"]) 

und fügen Sie diese Zeile settings.py

ist
FILE_UPLOAD_MAX_MEMORY_SIZE = 157286400 # 157286400 bytes = 150 MB 

Ich habe gerade über eine App Django-crispy forms rief. Sie geben Ihnen this snippetthis form

Meine Frage zu schaffen:

Ist es möglich, meine Schnipsel mit django-knusprig zu kombinieren, um eine Form zu schaffen, die wie folgt aussieht? Ich weiß, dass ich django-tagging verwenden muss.

enter image description here

Antwort

0

sehen, was CSS-Selektor django gibt das Formular. Verwenden Sie dann Ihr Stylesheet, um das Aussehen zu ändern. Sie können den Selektor auch selbst festlegen. Weitere Informationen finden Sie in der Dokumentation.