Lahendatud: kuidas kasutada konksu % 22to_representation% 22 django resteriaalide jaoks

Viimane uuendus: 09/11/2023

Peamine probleem seisneb selles, et konks %22to_representation%22 ei ole django puhkeaja serialisaatorites rakendatud.

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

▄██████████████████████████████████████▀▀██████▄▄█ █████▀▀██████▄▄█████████ ██ ██ ██ ██ ██ ██ ██ ██ ▀██ ▄██▀ ▀██ ▄█ █▀ ▀██ ▄██▀ ▀▌▐▌▐▌▐▌│││││║║║║╔═════════════════ ══ ══ ══ ══ ══ ─ ─ ─ ┤ ├─ │ ├─ │ ├─ │ ├─ │ ├─ │ ├─ │ ├─ │ ├─ │ ├────────────────░▒▒ ▒▒▓▓▓▓▒▒▒▒░──niline ilusos░▒░░░░░░░░░░░▒t░▒░░░░░░░░░░░▒tiko -d/ ☺/ ☻/ ☺/ ☻/ ☺/ | |` `| |` `| |` `| |` `| |` `| |, ,, ,, ,, ,,,,,_,,_,,,,,,_,,_,,,,,,,,_,,,,,_,,___,,,, - |/| / __|| ____|| ____|| ____|| ____|| // ||___ ||___ ||___ ||___ || //\//\//\//\//\//\\//\\///\\///\\//\\/\\\\\\///// \\\\////\\\\///\\\\///\\\\////\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\////////////////////// /////////////////////////////////////////////////// /////////////////////////////////////////////////// ////////////////////////////////\\\\\\///////////// /////////////////////////////////////////////////// /////////////////////////////////////////////////// /////////////////////////////////////////////////// /////////////////////////////////////////////////// /////////////////////////////////////////////////// /////////////////////////////////////////////////// ////////////////////^ ^ ^ ^ ^ ^ ^ ^ ^^^^ vvv vvv vvv vvv vvv^^^^^^^^^^^^^ ^^^^^^ <<<<<<<<>>>>>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;::::::::::::::::::::::::::::::::::::""" ”””””””””””””””””””””$$$$$$$$$$$$$$$$$$(((((((()) ))))))))))))))))))||||||||||||||||||{{{{{{{{}}}}}}} }}}}~~~~~~~~~~~~~~~"""""""`,~~~.~"~"~~.~"~"~~.~"~" - —………––––––…………..––––––………… ... —————-………………………………………….————————————-……………………………………… ...... —————————————————————————————————————–……………………………… ……………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………… …………………………………………………………………………. . . . . . .. .. .. .. .... .... .... .... ………………………………….. .......... .......... …………… ……………….. .......... .......... …… …… …… …… …… …………………………………………………………………………….. ………… .. ………… .. ………… .. ...................... ...................... ...................... ...................... ............... .. ............... .. ............... .. ............... .. .......... .......... .......... .......... ……… ……… ……… …………… ... .. ... .. ... .. … … … … . . . .) 😀 😀 😀 😀 😀 😀 😀 😀 😀 🙂 🙂 🙂 🙂 🙂 🙂 🙂 🙂 🙂 🙂 🙂 🙂 😉 😉 😉 😉 😉 😉 😉 😉 😉 😉. <<<” ” ” ” ” &; &; &; { { { { } } } [ [ [ [ ] ] ] ~ ~ ' ' # # $ $ % % &” ” '( ) * + ./ 0 1 2 3 4 5 6 7 8 9 ; <“= ? @ ABCDEFGHIJKLMNOPQRSTU VWXYZ [ ] _ ` abcdefghijklmnopqrstu vwxyz { | } ~ ⌂ ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£áíóúñѪº ¿®¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼⎛⎝⎠⎞⎛⎛
Kood üritab lisada UserSerializerile välja nimega 'full_name', mis ei ole mudeli osa. See teeb seda, tühistades meetodi get_fields() ja lisades väljade sõnastikku välja full_name.

Serialisers ülejäänud raamsõnad

Serialisaatorid on objektide klass, mida saab kasutada andmete säilitamiseks mudelis. Serialiseerijaid saab kasutada andmete teisendamiseks vormingusse, mida saab andmebaasi salvestada.

Mis on Django konksud

Konks on Django funktsioon, mis võimaldab teil päringu töötlemise teatud punktides koodi käivitada. Konksud on kasulikud sissetulevate päringute kohandatud töötlemiseks või konkreetsete olukordade lahendamiseks, mis võivad tekkida.

Seonduvad postitused: