2013-12-09 1 views
1

Я делаю администратор вручную как часть большого проекта. Каждое руководство имеет бренд, модель и имеет как минимум один PDF-файл.Имея более одного поля PDF на столе в Django

из django.db импортных моделей

class Manual(models.Model): 
    brand = models.CharField(max_length=255) 
    model = models.CharField(max_length=255) 
    manual = models.ImageField(upload_to='pdf') 

два вопроса:

  • Как я могу моделировать PDFField или родовое поле, а не поле изображения?
  • Возможно ли, чтобы в поле руководства было более одного файла без необходимости делать другую таблицу?

Спасибо!

+1

Почему бы не использовать FileField? Если вам нужно иметь более одного pdf-файла в ручном режиме, используйте отношения «один ко многим» как ForeignKey в другой таблице. Нет ничего плохого в том, что у вас есть несколько моделей. – Fiver

+0

Почему бы вам не добавить это как ответ, чтобы я мог принять и дать вам кредит? – Dynelight

+0

Несомненно, я добавил ответ немного подробнее. – Fiver

ответ

1

Если вам нужно иметь более одного pdf-файла в руководстве, используйте отношения «один-ко-многим» как ForeignKey в другой таблице. Нет ничего плохого в том, что у вас есть несколько моделей.

class Manual(models.Model): 
    brand = models.CharField(max_length=255) 
    model = models.CharField(max_length=255) 

class ManualPDF(models.Model): 
    manual = models.ForeignKey(Manual) 
    pdf = models.FileField(upload_to='pdf') 

В вашем представлении кода (или форма или код модели) вы можете получить все файлы PDF для руководства с использованием _set, который будет возвращать QuerySet из ManualPDF модельных объектов:

some_manual = Manual.objects.get(id=1) 
some_manual_pdfs = some_manual.manualpdf_set.all() 

Там более Информация в официальных документах Джанго:

https://docs.djangoproject.com/en/dev/topics/db/examples/many_to_one/

Смежные вопросы