2016-06-12 14 views
5

La barra ha ForeignKey su Foo, molte barre su un Foo. Utilizzo di Form in Django, a foreign key defaults to a select list input.selezione di chiavi esterne in Django Rest Framework

Vorrei questa funzionalità in Django Rest Framework, prima per API navigabili, quindi per Template HTML Renderer. Sono stato più di nested relations in the docs e ho anche visto this related question, ma non ha senso. Almeno mi fa pensare, dovrei vedere il comportamento del drop down proprio come i Django Forms.

in ultima analisi, voglio un modo per farci selezionare un Foo esistente durante la creazione/aggiornamento Bar credo che potrei farlo con TemplateHTMLRenderer a mano lavorazione una forma che cambia i campi di modulo per i dati completi JSON, vale a dire una nuova barra che sta puntando al Foo esistente, supponendo che scrivo aggiornamento e creo metodi su Bar. Ma questo mi suona come se mi mancasse il "modo semplice" da qualche parte.

class BarSerializer(serializers.ModelSerializer): 

    # This shows Foo.foo within serialzied Bar JSON: 
    # I suspect I am missing something with the relation that would allow me to select foo from a list 
    foo = serializers.SlugRelatedField(many=False, read_only=True,slug_field="foo") 


    class Meta: 
      model = Bar 
      fields = ('foo','some_value','another_value') 


class FooSerializer(serializers.ModelSerializer): 
    owner = serializers.ReadOnlyField(source='owner.username') 

    # This shows the Bar serialized within the Foo JSON i.e. nested serialization 
    bars = BarSerializer(many=True); 

    # reverse rel: related_name='bars' in Foo model 
    class Meta: 
     model = Foo 
     # 'bars' is the related name pointing from bar to foo 
     fields = ('bars', 'foo', 'owner') 

ho capito che per salvare i dati nidificate, il mio serializzatore ha bisogno di aggiornamento e creare. Implementazione di questo ora. Ma non riesco a capirlo, che cosa farei per inserire il DRF in un input selezionato con qualche rappresentazione delle opzioni di Foo?

Mi manca qualcosa di ovvio, sì? Arrivano i RTFM (di nuovo) downvotes:/

risposta

1

Questo era cinque mesi fa quindi probabilmente avete già la risposta, ma la mia ricerca su Google mi ha portato qui per iniziare.

Quindi in caso si o altri capita di trovare qui la risposta che ho trovato ha funzionato meglio era:

Django admin foreign key dropdown with custom value

Fondamentalmente è necessario raccontarla in uno dei due modi, che sul campo/i campi da utilizzare come la stringa per la discesa.

Problemi correlati