我有一个会计模块,其模型如下:
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模型,以便我可以轻松地在网页上显示链接。但是,我想到将一堆FileField添加到模型中时会感到畏缩。
我想知道是否有人对这个问题有一个很好的解决方案。我正在设想与M2M相似的东西,对于模板中的每个会计期间,我可以这样做:
templates.py
<ul>
{% for invoice in accounting_period_obj.invoices.all %}
<li><a href="{{invoice.url}}">{{invoice.name}}</a>
{% endfor %}
</ul>
ManyToManyField "through"参数看起来很有希望,但我没有链接到另一个模型。
答案 0 :(得分:0)
您可以使用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