Išspręsta: kaip naudoti %22to_representation%22 kabliuką django poilsio serializatoriams

Pagrindinė problema yra ta, kad %22to_representation%22 kabliukas neįdiegtas django poilsio serializatoriuose.

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                        { | } ~ ⌂ ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£áíóúñѪº¿®¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞═══════════════════ ══ ══ ══ ══ ══ ══ ══ ─ ─ ─ ─ ─ ─ ─ ─ ┤ ├─ │ ├─ │ ├─ │ ├─ │ ├─ │ ├─ │ ├─ │ ├─ │ ├─ │ ├─ ├──────────── ├──────────────────────── ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ██ ██ ██ ██ ██ ██ ██ ███▀▀▀██▄▄▄██████▀▀▀██████▄▄██████████████████████████████████████████████▀▀██████▄▄██████▀▀██████▄

▄██████████████████████████████████████▀▀██████▄▄█ █████▀▀██████▄▄█████████ ██ ██ ██ ██ ██ ██ ▀██ ▄██▀ ▄██▀ ▀██ ▀██ ▄█ ▄█ ▄█ ▄█ ▄█ ▄█ ▄█ ▄█ ▄█ ▄█ ▄█ ▄█ █▀ ▀██ ▀▌▐▌▐▌▐▌│││││║║║║╔═════════════════ ══ ══ ══ ══ ══ ─ ─ ┤ ├ ├ │ ├─ │ ├─ │ ├─ │ ├─ │ ├─ │ ├─ │ ├─ │ ├WEPT ▒▒▓▓▓▓▒▒▒▒░ngai ☺/ ☻/ ☺/ ☻/ ☺/ | |` `| |` `| |` `| |` `| |` `| |, ,, ,, ,, ,,,,,_,,_,,,,,,_,,_,,,,,_,,_,,,,,_,,___,,, - |/| / __|| ____|| ____|| ____|| ____|| // ||___ ||___ ||___ ||___ || //\//\//\//\//\//\\//\\///\\///\\//\\/\\\\\\///// \\\\///\\\\///\\\\///\\\\////\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\////////////////////// /////////////////////////////////////////////////// /////////////////////////////////////////////////// /////////////////////////////////\\\\\////////////// /////////////////////////////////////////////////// /////////////////////////////////////////////////// /////////////////////////////////////////////////// /////////////////////////////////////////////////// /////////////////////////////////////////////////// /////////////////////////////////////////////////// ////////////////////^ ^ ^ ^ ^ ^ ^ ^ ^^^^ vvv vvv vvv vvv vvv^^^^^^^^^^^^^ ^^^^^^ <<<<<<<<>>>>>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;:::::::::::::::::::::::::::::::::::::"" """"""""""""""""""""$$$$$$$$$$$$$$$$$$(((((((()) ))))))))))))))))))|||||||||||||||||||{{{{{{{{}}}}}}} }}}}~~~~~~~~~~~~~~~~""""""`,~~~.~"~"~~.~"~"~~.~"~" ~. —………––––––…………..–––––––………… ... —————-………………………………………….————————————-……………………………………… ……….——————————————————————————————————————————————— ——————————————————————————————————————–…………………………… ……………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………… ………………………………………………………………………. . . . . . .. .. .. .. .... .... .... .... ………………………………….. .......... .......... …………… ……………….. .......... .......... ………………………………………………………………………………………………………….. ............ .. ............ .. ............ .. ……………………. ……………………. ……………………. ……………………. ............... .. ............... .. ............... .. ............... .. .......... .......... .......... .......... ……………………………………… ... .. ... .. ... .. … … … … . . . ? <<<” ” ” ” ” &; &; &; { { { { } } } [ [ [ [ ] ] ] ~ ~ ' ' # # $ $ % % &” ” '( ) * + ./ 0 1 2 3 4 5 6 7 8 9 ; <“=?
Kodas bando pridėti lauką pavadinimu „full_name“ prie „UserSerializer“, kuris nėra modelio dalis. Jis tai daro nepaisydamas get_fields() metodo ir įtraukdamas lauką full_name į laukų žodyną.

Serializatorių poilsio rėmo žodžiai

Serializatoriai yra objektų klasė, kurią galima naudoti duomenims išsaugoti modelyje. Serializatoriai gali būti naudojami duomenims transformuoti į formatą, kuris gali būti saugomas duomenų bazėje.

Kas yra Django kabliukai

Kabliukas yra Django funkcija, leidžianti paleisti kodą tam tikruose užklausos apdorojimo taškuose. Kabliukai yra naudingi atliekant individualų gaunamų užklausų apdorojimą arba sprendžiant konkrečias situacijas, kurios gali kilti.

Susijusios naujienos:

Palikite komentarą