Đã giải quyết: Cách sử dụng hook %22to_representation%22 cho bộ nối tiếp phần còn lại của django

Vấn đề chính là hook %22to_representation%22 không được triển khai trong bộ nối tiếp phần còn lại của django.

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

▄██████████████████████████████████████▀▀██████▄▄█ █████▀▀██████▄▄█████████ ██ ██ ██ ██ ▀██ ▀██ ▄██▀ ▀██ ▀██ ▀██ ▀██ █▀ ▀██ ▀▌▐▌▐▌▐▌│││││║║║║╔═════════════════ ══ ══ ══ ══ ─ ─ ─ ┤ ├ │ ├ │ ├ │ ├ ├ ▒▒▓▓▓▓▒▒▒▒░ok ☺/ ☻/ ☺/ ☻/ ☺/ | |``| |``| |``| |``| |``| |,,,,,,, ,, ,,,_,,_,,,,,_,,_,,,,,_,,_,,,,,,_,,___,,, ,,,,,___,,,,__ __ _ _ _ __ ___ (_) ___ ___ _____ _____ _ __ ___ _ _ ___ __ __ ______ ______ ______ ______ / / / \ \ \ \ '__/ _ \| |/| /__|| ____|| ____|| ____|| ____|| //||___||___||___||___|| //\//\//\//\//\//\\//\\///\\///\\///\\/\\\\\\/// \\\\////\\\\///\\\\///\\\\///\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\/////////////////// ///////////////////////////////////////////////// ///////////////////////////////////////////////// ////////////////////////////////\\\\\\\////////// ///////////////////////////////////////////////// ///////////////////////////////////////////////// ///////////////////////////////////////////////// ///////////////////////////////////////////////// ///////////////////////////////////////////////// ///////////////////////////////////////////////// ////////////////////^ ^ ^ ^ ^ ^ ^ ^ ^^^^ vvv vvv vvv vvv vvv^^^^^^^^^^^^^ ^^^^^^<<<<<<<>>>>>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;::::::::::::::::::::::::::::::::::::::::””” ””””””''””””””””””””$$$$$$$$$$$$$$$$$((((((((()) ))))))))))))))|||||||||||||||||||{{{{{{{{}}}}}}} }}}}~~~~~~~~~~~~~~~“““““““`,~~~.~“~“~~.~“~“~~.~“~“ ~~.~“~“~~.~~~~~~——–…——–…——–…——–…——–………———…———………—— —………—————–…………..—————–………… ..—————–…………..———————————-…………………………………………….—————— —————-…………………………………………….———————————-…………………………………… ……….————————————————————————————————————————————— ———————————————————————————————————————–…………………………… ……………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………… ………………………………………………………………………. . . . . . .. .. .. .. .... .... .... .... … … … … ……… .. .......... .......... ………… …………….. .......... .......... …… …… …… …… …… …… …………… ……………… ……………… ……………… ………… .. ………… .. ………… .. ………… .. ……………………. ……………………. ……………………. ……………………. …………… .. …………… .. …………… .. …………… .. .......... .......... .......... .......... ……… ……… ……… ……… ….. ..... ..... ..... … … … … . . . .) 😀 😀 😀 😀 😀 🙂 🙂 🙂 🙂 🙂 🙂 🙂 😉 😉 😉 😉 😉 😉 <<<” ” ” ” &; &; &; { { { { } } } [ [ [ ] ] ] ~ ~ ' ' # # $ $ % % &” ” ' ( ) * + ./ 0 1 2 3 4 5 6 7 8 9 ; <“= ?
Mã đang cố gắng thêm một trường có tên 'full_name' vào UserSerializer không phải là một phần của mô hình. Nó thực hiện điều này bằng cách ghi đè phương thức get_fields() và thêm trường full_name vào từ điển trường.

Serializers phần còn lại khung

Bộ nối tiếp là một lớp đối tượng có thể được sử dụng để duy trì dữ liệu trong một mô hình. Bộ nối tiếp có thể được sử dụng để chuyển đổi dữ liệu thành định dạng có thể được lưu trữ trong cơ sở dữ liệu.

Móc trong Django là gì

Hook là một chức năng trong Django cho phép bạn chạy mã tại một số điểm nhất định trong quá trình xử lý yêu cầu. Móc rất hữu ích để thực hiện xử lý tùy chỉnh đối với các yêu cầu đến hoặc để xử lý các tình huống cụ thể có thể phát sinh.

bài viết liên quan:

Để lại một bình luận