2 つの異なるモデルから共通のフィールドを返す単一の Tastypie リソースを作成したいと考えています。
次のように記述されたモデルがあります。
Class Invoice(models.Model):
transaction_batch = models.ForeignKey(TransactionBatch)
invoice_number = models.IntegerField()
subtotal = models.DecimalField(max_digits=20, decimal_places=2)
tax = models.DecimalField(max_digits=20, decimal_places=2)
total = models.DecimalField(max_digits=20, decimal_places=2)
location = models.ForeignKey(Delivery_location)
date_time = models.DateTimeField()
Class Payment(models.Model):
transaction_batch = models.ForeignKey(TransactionBatch)
location = models.ForeignKey(Delivery_location)
payment_id = models.IntegerField(pk=True)
datetime = models.DateTimeField()
amount = models.DecimalField(max_digits=20, decimal_places=2)
payment_method = models.IntegerField(choices = PAYMENT_METHOD_CHOICES)
そして、次のフィールドを持つリソースを作成したいと思います:
Class TransactionResource(Resource):
type = fields.CharField() #"invoice" or "payment"
id = fields.CharField(attribute='name') #invoice_number or payment_id
location = fields.ForeignKey(LocationResource)
total = fields.IntegerField(attribute='total', null=True) #total or amount
datetime = fields.DateField()
フィールド名が直接一致しないため、Model フィールドを Resource フィールドにマップする方法が必要になります。たとえば、リソース ID フィールドは、Invoices の場合は invoice_number、Payments の場合は payment_id になります。
これについて最善の方法は何ですか?