假设我有3种型号:
class MeterialPricing(models.Model):
list_price = models.DecimalField(max_digits=10, decimal_places=2, blank=True, null=True)
book_pricing = models.ForeignKey('books.BookPricing', null=True, blank=True)
inventory_pricing = models.ForeignKey('store.InventoryPricing', null=True, blank=True)
class BookPricing(models.Model):
list_price = models.DecimalField(max_digits=10, decimal_places=2, blank=True, null=True)
class InventoryPricing(models.Model):
list_price = models.DecimalField(max_digits=10, decimal_places=2, blank=True, null=True)
还有一个序列化器类:
class MaterialPricingSerializer(ModelSerializer):
class Meta:
model = MaterialPricingShell
fields = ('pk', 'list_price',)
如您所见,现在,序列化的list_price来自MaterialPricing模型。
如果存在BookPricing或InventoryPricing list_price ,我想将序列化的list_price设置为其中之一。 BookPricing中的list_price具有最高优先级,然后是InventoryPricing,并且如果两者都为空,那么我们可以将list_price设为MeterialPricing模型上的list_price。
我一直在寻找使用SerializerMethodField()的方法,但是我不确定在BookPricing或InventoryPricing模型上是否存在list_price的挂勾。