在Django的桌子上有多个PDF字段

时间:2013-12-09 23:39:38

标签: django pdf database-design

我正在将手动管理员作为大项目的一部分。每本手册都有一个品牌,一个型号,至少有一个PDF。

来自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 个答案:

答案 0 :(得分: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')

在您的视图代码(或表单或模型代码)中,您可以使用_set获取手册的所有PDF,这将返回ManualPDF模型对象的QuerySet:

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

官方Django文档中有更多信息:

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