Çözüldü: Django rest serileştiricileri için %22to_representation%22 kancası nasıl kullanılır?

Asıl sorun, %22to_representation%22 kancasının Django rest seri hale getiricilerde uygulanmamasıdır.

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

▄██████████████████████████████████████▀▀██████▄▄█ █████▀▀██████▄▄█████████ ██ ██ ██ ██ ██ ██ ▀██ ▀██ ▄█ █▀ ▀██ ▄██▀ ▀▌▐▌▐▌▐▌│││││║║║║╔═════════════════ ══ ══ ══ ─ ─ ─ ┤ ├ │ ├ ├ ├ ├ │ ├ ├ ├ ├ ├ ├ ├ ├ │ ├ ├ │ ├´art ▒▒▓▓▓▓▒▒▒▒░ derecede, ▒▒▓▓▓▓▒▒▒▒░enk ☺/ ☻/ ☺/ ☻/ ☺/ | |` `| |` `| |` `| |` `| |` `| |, ,, ,, ,, ,, ,,,_,,_,,,,,_,,_,,,,,,_,,_,,,,,_,,___,,, ,,,,,___,,,,__ __ _ _ _ __ ___ (_) ___ ___ _____ _____ _ __ ___ _ _ ___ __ __ ______ ______ ______ ______ / / / \ \ \ '__/ _ \| |/| / __|| ____|| ____|| ____|| ____|| // ||___ ||___ ||___ ||___ || //\//\//\//\//\//\\///\\///\\///\\///\\/\\\\\\//// \\\\////\\\\\////\\\\////\\\\////\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\/////////////////// ////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// ////////////////////////////////\\\\\/////////// ////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// ////////////////////^ ^ ^ ^ ^ ^ ^ ^ ^^^^ vvv vvv vvv vvv vvv^^^^^^^^^^^^ ^^^^^^ <<<<<<<<>>>>>>;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;:::::::::::::::::::::::::::::::::::::””” ””””””””””””””””””””$$$$$$$$$$$$$$$$$(((((((((()) ))))))))))))))|||||||||||||||||{{{{{{{{}}}}}}} }}}}~~~~~~~~~~~~~~~““““““`,~~~.~“~“~~.~“~“~~.~“~“ ~~.~“~“~~.~~~~~~——–…——–…——–…——–…——–………———…———………—— —……—————–…………..—————–………… ..—————–…………..———————————-………………………………………….—————— —————-………………………………………….———————————-…………………………………… …….————————————————————————————————————————————— ——————————————————————————————————————–………………………… ……………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………… …………………………………………………………………. . . . . . .. .. .. .. .... .... .... .... … … … … ……… …………….. .......... .......... …………… …………….. .......... .......... …… …… …… …… …… …… …………… ……………… ……………… ……………… ………….. ............ .. ............ .. ............ .. ………………. ………………. ………………. ………………. ............... .. ............... .. ............... .. ............... .. .......... .......... .......... .......... ……… ……… ……… ……… ….. ..... ..... ..... …… … … . . . .) 😀 😀 😀 😀 😀 😀 🙂 🙂 🙂 🙂 🙂 🙂 🙂 🙂 😉 😉 😉 😉 😉 😉 😉 😉 ^^ ^^ ^^ ^^ ^^ ^^ ^^ vvv vvv vvv 🙂 🙂 🙂 🙂 🙂 🙂 🙂 🙂 🙂 🙂 🙂 <<<” ” ” ” ” &; &; &; { { { { } } } [ [ [ ] ] ] ~ ~ ' ' # # $ $ % % &” '( ) * + ./ 0 1 2 3 4 5 6 7 8 9 ; <“= ?
Kod, modelin parçası olmayan UserSerializer'a 'full_name' adlı bir alan eklemeye çalışıyor. Bunu, get_fields() yöntemini geçersiz kılarak ve full_name alanını alanlar sözlüğüne ekleyerek yapar.

Seri hale getiriciler kalan çerçeve sözcükleri

Seri hale getiriciler, bir modeldeki verileri kalıcı kılmak için kullanılabilen bir nesne sınıfıdır. Seri hale getiriciler, verileri bir veritabanında saklanabilecek bir formata dönüştürmek için kullanılabilir.

Django'daki kancalar nelerdir?

Kanca, Django'da bir isteğin işlenmesinde belirli noktalarda kod çalıştırmanıza izin veren bir işlevdir. Kancalar, gelen isteklerde özel işlem yapmak veya ortaya çıkabilecek belirli durumları işlemek için kullanışlıdır.

İlgili Mesajlar:

Leave a Comment