4

Django チュートリアルに取り組んだ後、非常に単純な請求アプリケーションを構築しようとしています。

複数の製品を請求書に追加し、Django admin の請求書フォームで各製品の数量を指定したいと考えています。同じ製品の数量が異なる場合は、新しい製品オブジェクトを作成する必要があります。

現在、私のモデルは次のようになっています (Company モデルと Customer モデルは除外されています)。

class Product(models.Model):
    description = models.TextField()
    quantity = models.IntegerField()
    price = models.DecimalField(max_digits=10,decimal_places=2)
    tax = models.ForeignKey(Tax)

class Invoice(models.Model):
    company = models.ForeignKey(Company)
    customer = models.ForeignKey(Customer)
    products = models.ManyToManyField(Product)
    invoice_no = models.IntegerField()
    invoice_date = models.DateField(auto_now=True)
    due_date = models.DateField(default=datetime.date.today() + datetime.timedelta(days=14))

数量は Product モデルから除外する必要があると思いますが、Invoice モデルでそのフィールドを作成するにはどうすればよいですか?

4

1 に答える 1

9

モデル構造を少し変更する必要があります。お気づきのように、数量は製品モデルに属しておらず、製品と請求書の関係に属しています。

Django でこれを行うには、テーブルで ManyToMany リレーションシップをthrough使用できます。

class Product(models.Model):
    ...

class ProductQuantity(models.Model):
    product = models.ForeignKey('Product')
    invoice = models.ForeignKey('Invoice')
    quantity = models.IntegerField()

class Invoice(models.Model):
    ...
    products = models.ManyToManyField(Product, through=ProductQuantity)
于 2009-11-11T13:37:59.633 に答える