2016-04-07 28 views
0

Bilmek istiyorum, kodum tamam mı?Django birçok dosyaya çok sayıda yükleme yapın

Ne istiyorum: Birden çok dosya yükleme özelliği olan bir form oluşturun. Birisi çoktan çoğa hakkında söyleyebilir mi? Tamam mı?

Çok sayıda dosya yüklemek istiyorum. Nasıl olabilir?


from __future__ import unicode_literals 
import uuid 
from django.db import models 

def get_file_path(instance, filename): 
    ext = filename.split('.')[-1] 
    filename = "%s.%s" % (uuid.uuid4(), ext) 
    return os.path.join('file_uploads/%Y/%m', filename) 

# Create your models here. 
class Order(models.Model): 
    name = models.CharField(max_length=255) 
    email = models.CharField(max_length=255) 
    phone = models.CharField(max_length=255, blank=True) 
    reference = models.CharField(max_length=255) 
    files = models.ManyToManyField(File) 
    deadline = models.DateTimeField(auto_now_add=False, auto_now=False) 

class File(models.Model): 
    name = models.CharField(max_length=255) 
    file = models.FileField(upload_to=get_file_path) 

Güncelleme: i makemigrations komuta çalışıyorum hata alıyorum:

File "/home/dima/web/files_2016_04/fileupl/flpp/models.py", line 11, in <module> 
    class Order(models.Model): 
    File "/home/dima/web/files_2016_04/fileupl/flpp/models.py", line 16, in Order 
    files = models.ManyToManyField(File) 
NameError: name 'File' is not defined 

Ama tanımladı. Sorun nedir? Güncelleme: i

UPD al dersten önce Teşekkür File sınıfını hareketli bu sorunu çözmek i ForeignKey tırnak

+0

Siparişlerin dosyaları paylaşabilmesini istiyorsanız, tamam. Dosyaya bir Yabancı Dosya için giderdim. – Jingo

+0

Ben kullanıcılar/insanlar –

+0

için yabancı dosya demek şeklinde birden fazla dosya yükleme özelliği istiyorum, bu model sadece tek bir dosyayı destekleyecek anlamına gelir? Ama birden çok –

cevap

0

geçerli yapısını korumak istiyorsanız verseniz de sahip ('Dosya') ile sorun çözüldü tırnak koymak gerekir:

dosyaları = models.ManyToManyField ('Dosya')

+0

Yani yeniden düzenleyebileceğimi ve parantez içinde ip kullanırsam bu hataları alamayacağımı mı kastediyorsun? –

+0

Tam olarak. Bir ManyToManyField olarak eklemeye çalıştığınızda, File sınıfı mevcut değil. –

0
sadece Sipariş sınıfından daha üst Dosya sınıf bildirmek gerekir

# Create your models here. 
class File(models.Model): 
    name = models.CharField(max_length=255) 
    file = models.FileField(upload_to=get_file_path) 

class Order(models.Model): 
    name = models.CharField(max_length=255) 
    email = models.CharField(max_length=255) 
    phone = models.CharField(max_length=255, blank=True) 
    reference = models.CharField(max_length=255) 
    files = models.ManyToManyField(File) 
    deadline = models.DateTimeField(auto_now_add=False, auto_now=False)