2016-04-07 2 views
0

Я хочу знать, это мой код в порядке?Django загружать несколько файлов много для многих

Что я хочу: создать форму с функцией загрузки нескольких файлов. Может ли кто-нибудь сказать о многих-ко-многим? Это нормально?

Я хочу загрузить много файлов. Как это может быть?


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) 

Обновлено: Я получаю ошибку, когда я пытаюсь командовать makemigrations:

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 

Но это определено. Что не так? Обновлено: я решить эту проблему перемещения класса File перед классом заказа

UPD Спасибо, я решил проблему с ForeignKey («Файл») с цитатами

+0

Если вы хотите, чтобы Orders могли обмениваться файлами, тогда все в порядке. Я бы пошел на ForeignKey в файл для заказа. – Jingo

+0

Мне нужна функция, загружающая несколько файлов в форму для пользователей/людей –

+0

вы говорите, что foreignkey и это означает, что модель будет поддерживать только один файл? Но я хочу несколько –

ответ

0

Если вы хотите сохранить текущую структуру, вы будете необходимо поместить его в кавычки:

файлов = models.ManyToManyField ('File')

+0

Итак, вы имеете в виду, что я могу изменить порядок, и я не получу эти ошибки, если я использую строку в paranthesis? –

+0

Точно. Класс File не существует, когда вы пытаетесь добавить его как ManyToManyField. –

0

Вам просто нужно объявить класс File верхний, чем класс Order

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