1

私はこのようなモデルの会計モジュールを持っています:

class Accounting_period(models.Model):
    start_date = models.DateField()
    end_date = models.DateField()
    base_pdf = models.FileField()

毎晩深夜に実行される管理関数があり、filter(end_date__lt = datetime.datetime.today())すると、pisa経由で請求書PDFが生成され、そのファイルオブジェクトがbase_pdfに保存されます。PDFは、経理担当者向けのサイトのリンクから入手できます。

ただし、end_dateの後に、行われた追加の作業をその請求書にさかのぼる必要がある場合があります。次に、新しい「過去の日付」の請求書を「Invoice-2.pdf」のように作成する必要があります。この請求書には、新しい過去の日付の合計のみが含まれます(したがって、経理担当者を混乱させることはありません)。これをAccounting_periodモデルに保存して、Webページにリンクを簡単に表示できるようにします。しかし、私はモデルにたくさんのFileFieldsを追加することを考えたくなりました。

誰かがこの問題の良い解決策を持っているかどうか疑問に思っています。私は、テンプレートの各会計期間についてこれを行うことができるM2Mに類似した何かを想像しています。

templates.py
   <ul>
   {% for invoice in accounting_period_obj.invoices.all %}
      <li><a href="{{invoice.url}}">{{invoice.name}}</a>
   {% endfor %}
   </ul>

ManyToManyFieldの「through」引数は有望に見えますが、別のモデルにリンクしていません。

4

1 に答える 1

0

これには、ForeignKey(1対多の関係)を使用できます。

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を参照してください。

于 2011-06-06T09:59:23.683 に答える