0

Bir API barındırıyorum ve bunun için Django Rest Framework kullanıyorum. Ben bir Model var ve DB aracılığıyla & model serileştirme modelleri aracılığıyla depolamak için API aracılığıyla bazı veri alıyorum.Django: ModelSerializer için özel alan eşleştirmesi

Sorunum, MySQL tablosundaki sütun adlarının barındırılan API üzerinde aldığım verilerden farklı olmasıdır. örneğin:

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

Ve Modeli aşağıdaki gibidir:

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) 

Serializer:

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

nasıl a -> x, b -> y, c -> z haritalayabilirsiniz API üzerinden

Veri Got ? senin TableSerializer sınıfta

+0

Oluşturma yönteminde a, b, c ve map ile yeni bir seri hale getirici nasıl? – ilse2005

cevap

1

, el eşlemesi oluşturabilirsiniz:

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') 

Bir Tablo örneğini döndüğünüzde, x, y ve z özellikleri a, b ve c olarak seri hale edilecektir. Benzer şekilde, API'niz aracılığıyla bazı veriler aldığınızda, alanlar başka yollarla eşlenecektir.

Sen DRF docs

ilse2005 yaklaşımında biraz daha bilgi hakkında source işleri alırsınız: Eğer serileştiriciye oluşturmak yöntemini geçersiz ve tek başınıza eşleme yapabilirsiniz ancak seri hale alanlarında source parametre ekleyerek, Bu, Table örneklerini kolayca oluşturmanıza, güncellemenize ve geri döndürmenize izin verecektir.

İlgili konular