0

私はこれらのモデルを持っています:

#model.py

class Subject(models.Model):
    name = models.CharField("Name",max_length=50, blank=True)
    ...
    ...

class Activity(models.Model):
    label = models.CharField("Act. name",max_length=150)
    price = models.DecimalField("price", max_digits=10, decimal_places=2,default=0)
    count = models.IntegerField("Count", default=0)

    def __unicode__(self):
        return u"%s" % (self.label)
    class Meta:
        verbose_name_plural = "Activities"


class Invoice(models.Model):
    subject = models.ForeignKey(Subject)
    date = models.DateField(default=date.today())
    activities = models.ManyToManyField(Activity)
    ....
    ....

管理者で新しい請求書インスタンスを作成するときに、多対多のフィールド「活動」を選択できますが、各活動の数量をカウントして保存するために請求書フィールドとして追加のカウンター (IntegerField など) を使用したいと考えています。請求書インスタンスに追加されました。これは可能ですか?

ありがとう、

ルーク

4

1 に答える 1

1

モデルにフィールドを作成し、save メソッドをオーバーライドすることができます

class Invoice(models.Model):
    subject = models.ForeignKey(Subject)
    date = models.DateField(default=date.today())
    activities = models.ManyToManyField(Activity)
    activity_count = models.PositiveIntegerField(default=0)
    def save(self):
       self.activity_count = self.activities.count()
       super(Invoice, self).save()
于 2012-11-12T23:34:55.587 に答える