簡體   English   中英

Django:ModelSerializer的自定義字段映射

[英]Django: Custom field mapping for ModelSerializer

我托管一個API,為此,我使用的是Django Rest Framework 我有一個模型,我正在通過API獲取一些數據,以通過模型和模型序列化器存儲在數據庫中。

我的問題是MySQL表中的列名與我在托管的API上獲得的數據不同。 例如:

通過API獲得的數據:

{
    "a": "b",
    "c": "d",
    "e": "f",
}

我的模型如下:

class Table(models.Model):
    x  = models.CharField(max_length=25,primary_key=True)
    y  = models.CharField(max_length=25)
    z  = models.CharField(max_length=25)

序列化器:

class TableSerializer(serializers.ModelSerializer):
    class Meta:
        model = Table
        fields = ( 'x', 'y', 'z')

我如何映射a -> xb -> yc -> z

在TableSerializer類中,可以手動創建映射:

class TableSerializer(serializers.ModelSerializer):
    a = models.CharField(source='x', max_length=25, primary_key=True)
    b = models.CharField(source='y', max_length=25)
    c = models.CharField(source='z', max_length=25)

    class Meta:
        model = Table
        fields = ( 'a', 'b', 'c')

當您返回Table實例時, xyz屬性將被序列化為abc 同樣,當您通過API獲取一些數據時,這些字段將以其他方式映射。

您將在DRF文檔中獲得有關source更多信息。

ilse2005的方法有效:您可以在序列化程序中覆蓋create方法,並自己進行映射,但可以在序列化程序字段中添加source參數,這將使您輕松創建,更新和返回Table實例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM