2014-08-30 2 views
5

sto serializzazione set di chiavi degli Esteri usando Django Resto quadro, ho seguenti modelli:Come rinominare ForeignKey impostare campo in Django Resto quadro

class Transaction(models.Model): 
    ... 
class TransactionStatus(models.Model): 
    transaction = models.ForeignKey(Transaction) 
    ... 

ho un serializzatore per entrambi questi modelli, uno di loro sguardi in questo modo:

class TransactionSerializer(serializers.ModelSerializer): 
    transactionstatus_set = TransactionStatusSerializer(many=True, read_only=True) 

    class Meta: 
     model = Transaction 
     depth = 1 
     fields = ('id', 'transactionstatus_set') 

voglio avere qui un elenco di operazioni stati dalla parte posteriore di riferimento _set queryset ... Ma transaction_set sembra proprio nome molto scomoda in API per questo ..

risposta

9

Dopo una sperimentazione rapida ho scoperto che questo farà il trucco:

class TransactionSerializer(serializers.ModelSerializer): 
    changes = TransactionStatusSerializer(many=True, read_only=True, source='transactionstatus_set') 

    class Meta: 
     model = Transaction 
     depth = 1 
     fields = ('id', 'changes') 

Ora ho un elenco degli stati collegati da chiave esterna con un bel nome ...

+1

Come nota 'fonte fissa è il nome originale del 'campo' nel' modello django', e la variabile che il serializzatore correlato sta dichiarando (in questo caso 'changes') è il nome finale del campo rinominato. –

+0

Grazie mille per questa risposta, scoprire che mi stava uccidendo – Dakusan