Django:从外键模型的字段填充序列化字段

时间:2019-06-20 17:13:38

标签: python django python-3.x django-models django-rest-framework

假设我有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的挂勾。

0 个答案:

没有答案