utilizzando Django restDjango RIPOSO: oggetto nidificato add on creare (POST) non solo aggiornare (PUT)
Qui di seguito è come ho avuto il mio serializer.py.
class ProfileSerializer(serializers.ModelSerializer):
class Meta:
model = Profile
fields = ('id', 'name', 'active', 'type')
tipo è un flatview
Ho poi cambiato così 'tipo' è stato nidificato per ogni profilo come questo ...
class TypeSerializer(serializers.ModelSerializer):
class Meta:
model = Type
fields = ('id', 'name', 'active')
class ProfileSerializer(serializers.ModelSerializer):
type = TypeSerializer()
class Meta:
model = Profile
fields = ('id', 'name', 'active', 'type'')
ora questo funziona perfettamente, ma posso ora aggiorna solo 'tipo' quando nel dettaglio del profilo ora è di sola lettura.
Come è possibile aggiungere un tipo durante la creazione di un nuovo profilo e mantenere comunque questa vista nidificata?
Spero di averlo spiegato chiaramente.
UPDATE:
Ok, ho appena letto questo:
Nota: serializzatori nidificati sono adatti solo per sola lettura rappresentazioni, in quanto vi sono casi in cui avrebbero dovuto ambiguo o comportamento non ovvio se utilizzato durante l'aggiornamento delle istanze. Per le rappresentazioni di lettura-scrittura è necessario utilizzare sempre una rappresentazione piatta, utilizzando una delle sottoclassi RelatedField.
Quindi ha senso. Così ho cambiato ....
type = serializers.PrimaryKeyRelatedField()
che lo mette di nuovo in POST e il lavoro, ma è un peccato, non posso rappresentare 'tipo' con ID e il nome in modo che rende più senso per il utente finale?
ho scoperto che SlugRelatedField mi permette di cambiare la società dal id per qualcosa di significativo come il titolo o il nome del campo, ma questo è usando un campo piatto non annidato. Ritenterò con nidificato e vedrò se l'override potrebbe funzionare. – jason
Puoi spiegare, come possiamo convalidare altri campi qui? – CrazyGeek