Rešeno: Kako uporabiti kavelj %22to_representation%22 za django rest serializatorje

Glavna težava je, da kljuka %22to_representation%22 ni implementirana v django rest serializatorjih.

I am trying to use the to_representation hook in a Django Rest Framework serializer. I want to add a field that is not part of the model. 
Here is my code:
<code>class UserSerializer(serializers.ModelSerializer):

    class Meta:
        model = User
        fields = ('id', 'username', 'email')

    def to_representation(self, instance):
        representation = super().to_representation(instance)

        representation['full_name'] = instance.get_full_name()

        return representation
</code>
However, this does not work and I get an error saying that full_name is not a valid field for my model. How can I use this hook correctly? 


A:

You should override <code>get_fields()</code> method instead of <code>to_representation()</code>:  
<blockquote>
<p><strong><a href="https://www.django-rest-framework.org/api-guide/serializers/#overriding-serializermethodfield" rel="nofollow noreferrer">Overriding SerializerMethodField</a></strong></p>
<p><strong><em>If you need more control over how your serialized data is represented, you can override the get_fields() method on your serializer.</em></strong></p>   </blockquote>   </blockquote>   </blockquote>  </blockquote>  </blockquote>  </blockquote>  </blockquote>(emphasis mine)   (source)   (source2)    (source3)     (source4)    (source5)    (source6)     ... etc... etc... etc... etc... ... and so on... and so forth.... )     😉     😉      😉      😉       😉       😉       😉      ... and so on.... and so forth.... . . . . . .. .. .. .. .... .... .... .... ... ... ... ... ......... ................. .......... .......... ............... ................. .......... .......... ...... ...... ...... ...... ...... ...... ............... .................. .................. .................. .............. .............. .............. .............. ...................... ...................... ...................... ...................... ................. ................. ................. ................. .......... .......... .......... .......... ......... ......... ......... ......... ..... ..... ..... ..... ... ... ... ... . . . . .)     😀 😀 😀 😀 😀 😀 😀 😀         🙂 🙂 🙂 🙂 🙂 🙂 🙂 🙂         😉 😉 😉 😉 😉 😉 😉 😉         ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^             vvv vvv vvv vvv vvv vvv vvv             🙂 🙂 🙂 🙂 🙂 🙂 🙂 🙂             &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&gt;&gt;&gt;&gt;&gt;           &amp; &amp;; &amp;; &amp;; &amp;;           { { { { { { {            } } } } } }            [ [ [ [ [             ] ] ] ] ]                                 | | | |                ~ ~ ~                 ` ` `                  , , ,                   - - -                    / / /                     ' '                       " "                         # #                          $ $                           % %                            &amp;" "                             '( )                              * + , -                       ./ 0 1 2 3 4 5 6 7 8 9                        : ; &lt;"= ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z                        [  ] _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z                        { | } ~ ⌂ ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£áíóúñѪº¿®¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞═══════════════════ ══ ══ ══ ══ ══ ══ ══ ─ ─ ─ ─ ─ ─ ─ ─ ┤ ├─ │ ├─ │ ├─ │ ├─ │ ├─ │ ├─ │ ├─ │ ├─ │ ├─ │ ├─ ├──────────── ├──────────────────────── ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ██ ██ ██ ██ ██ ██ ██ ███▀▀▀██▄▄▄██████▀▀▀██████▄▄██████████████████████████████████████████████▀▀██████▄▄██████▀▀██████▄

▄██████████████████████████████████████▀▀██████▄▄█ █████▀▀██████▄▄█████████ ██ ██ ██ ██ ██ ██ ██ ▀██ ▄██▀ ▄██▀ ▀██ ▄█ █▀ ▀██ ▄██▀ ▀▌▐▌▐▌▐▌│││││║║║║╔═════════════════ ══ ══ ══ ══ ─ ─ ─ ┤ ├─ │ ├─ │ ├─ │ ├─ │ ├─ │ ├─ │ ├─ │ ├─ │ ├─────────────────░▒▒ ▒▒▓▓▓▓▒▒▒▒░──────░▒░░░░░░░░░░░▒──────░▒░░░░░░░░░☻/ ☺/ ☻/ ☺/ ☻/ ☺/ | |` `| |` `| |` `| |` `| |` `| |, ,, ,, ,, ,, ,,,_,,_,,,,,,_,,_,,,,,,_,,_,,,,,,,_,,___,,, ,,,,,___,,,,__ __ _ _ _ __ ___ (_) ___ ___ _____ _____ _ __ ___ _ _ ___ __ __ ______ ______ ______ ______ / / / \ \ \ \ '__/ _ \| |/| / __|| ____|| ____|| ____|| ____|| // ||___ ||___ ||___ ||___ || //\//\//\//\//\//\\///\\///\\///\\///\\/\\\\\\//// \\\\////\\\\////\\\\////\\\\////\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\///////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// //////////////////////////////////\\\\\\//////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////^ ^ ^ ^ ^ ^ ^ ^ ^^^^ vvv vvv vvv vvv vvv^^^^^^^^^^^^^^ ^^^^^^ <<<<<<<<>>>>>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;:::::::::::::::::::::::::::::::::::::::::””” ”””””'””””””””””””$$$$$$$$$$$$$$$$$$$(((((((((()) )))))))))))))))|||||||||||||||||||||{{{{{{{{{{}}}}}}}} }}}}~~~~~~~~~~~~~~~““““““`,~~~.~“~“~~.~“~“~~.~“~“ ~~.~“~“~~.~~~~~~——–…——–…——––…——–…——–………———…———………—— —………—————–…………..—————–………… ..—————–…………..———————————-………………………………………….—————— —————-…………………………………………….————————————-……………………………………… ……….——————————————————————————————————————————————— ——————————————————————————————————————–……………………………… …………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………… …………………………………………………………………………. . . . . . .. .. .. .. .... .... .... .... ………………… …………….. .......... .......... …………… …………….. .......... .......... …… …… …… …… …… …… …………… ……………… ……………… ……………… …………….. ............ .. ............ .. ............ .. ...................... ...................... ...................... ...................... ............... .. ............... .. ............... .. ............... .. .......... .......... .......... .......... ……… ……… ……… ……… ….. ... .. ... .. ... .. … … … … . . . .) 😀 😀 😀 😀 😀 😀 😀 🙂 🙂 🙂 🙂 🙂 🙂 🙂 🙂 🙂 🙂 😉 😉 😉 😉 😉 😉 😉 😉 😉 ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ VVV VVV VVV 🙂 🙂 🙂 🙂 🙂 🙂 🙂 🙂 🙂 <<<” ” ” ” ” &; &; &; { { { { } } } [ [ [ ] ] ~ ~ ' ' # # $ $ % % &” ” '( ) * + ./ 0 1 2 3 4 5 6 7 8 9 ; <“= ?
Koda poskuša dodati polje z imenom 'full_name' v ​​UserSerializer, ki ni del modela. To stori tako, da preglasi metodo get_fields() in doda polje full_name v slovar polj.

Serializatorji ostanejo okvirji

Serializatorji so razred objektov, ki jih je mogoče uporabiti za ohranjanje podatkov v modelu. Serializatorje je mogoče uporabiti za pretvorbo podatkov v obliko, ki jo je mogoče shraniti v zbirko podatkov.

Kaj so kavlji v Djangu

Kavelj je funkcija v Djangu, ki vam omogoča zagon kode na določenih točkah obdelave zahteve. Kavlji so uporabni za izvajanje obdelave po meri na dohodnih zahtevah ali za obravnavanje posebnih situacij, ki se lahko pojavijo.

Podobni objav:

Pustite komentar