如果文件数量可能不同,请将多个文件链接到模型的最佳实践

我有一个会计模块,其模型如下:
class Accounting_period(models.Model):
    start_date = models.DateField()
    end_date = models.DateField()
    base_pdf = models.FileField()
我有一个管理功能,每晚午夜运行,一旦过滤(end_date__lt = datetime.datetime.today())它通过比萨生成一个发票PDF并将该文件对象保存在base_pdf。 PDF可通过网站上的会计人员链接获得。 但是,在end_date之后,有些情况会突然出现,其他工作需要回溯到该发票。然后需要创建一个新的“Back dated”发票,例如“Invoice-2.pdf”,它只有新的回溯总计(所以我们不会混淆会计人员)。我想将其保存到Accounting_period模型,以便我可以轻松地在网页上显示链接。但是我想到在模型中添加一堆FileFields时会感到畏缩。 我想知道是否有人对这个问题有一个很好的解决方案。我正在设想与M2M具有相似性的东西,对于模板中的每个会计期间,我可以这样做:
templates.py
   <ul>
   {% for invoice in accounting_period_obj.invoices.all %}
      <li><a href="{{invoice.url}}">{{invoice.name}}</a>
   {% endfor %}
   </ul>
ManyToManyField“通过”参数看起来很有希望,但我没有链接到另一个模型。     
已邀请:
您可以使用ForeignKey(一对多关系):
class AccountingPeriodBackDated(models.Model):
    accounting_period= models.ForeignKey(AccountingPeriod, related_name="backdates")
    pdf = models.FileField()
然后用
templates.py
   <ul>
      <li><a href="{{accounting_period_obj.base_pdf.url}}">{{accounting_period_obj.base_pdf.name}}</a> (Original)</li>
      {% for o in accounting_period_obj.backdates.all %}
         <li><a href="{{o.pdf.url}}">{{o.pdf.name}}</a></li>
      {% endfor %}
   </ul>
有关详细信息,请参阅:https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.ForeignKey     

要回复问题请先登录注册