Django rest framework 如何在django rest框架中重新排序序列化程序响应?

Django rest framework 如何在django rest框架中重新排序序列化程序响应?,django-rest-framework,serialization,Django Rest Framework,Serialization,由于嵌套序列化程序,当前我收到以下响应。我在购物车序列化程序中嵌套了产品序列化程序。通过这样做,我得到以下结果。但希望主部分中的所有产品属性(产品外部,如下所示) 但我希望得到如下回应: { "name": "Ghost Peanut Butter Cereal Milk Whey Protein", "product_code": "B07FLJYP5M", "description": "Ghost products feature a 100% t

由于嵌套序列化程序,当前我收到以下响应。我在购物车序列化程序中嵌套了产品序列化程序。通过这样做,我得到以下结果。但希望主部分中的所有产品属性(产品外部,如下所示)

但我希望得到如下回应:

{
       "name": "Ghost Peanut Butter Cereal Milk Whey Protein",
       "product_code": "B07FLJYP5M",
       "description": "Ghost products feature a 100% transparent label that fully discloses the dose of each active ingredient.",
       "price": "5000.00",
       "photo": "https://images-na.ssl-images-amazon.com/images/I/61WZazUpWsL._SX522_.jpg",
       "link_to_amazon": "https://www.amazon.com/dp/B07FLJYP5M/?tag=1230568-20",
       "description": null,
       "default": "Yes"
    }
models.py

class DefaultCart(models.Model):
    # Default Cart in Model class
    YES = 'Yes'
    NO = 'No'
    DEFAULT_CHOICES = (
        (YES, 'Yes'),
        (NO, 'No'),
    )

    product = models.ForeignKey(Product, related_name='product', on_delete=models.CASCADE)
    description = models.TextField(blank=True, null=True)
    default = models.CharField(
        max_length=3,
        choices=DEFAULT_CHOICES,
        default=YES,
    )
序列化程序.py

class ProductSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Product
        fields=(
            'id','name','product_code','description','price','photo','link_to_amazon'
        )

class DefaultCartSerializer(serializers. HyperlinkedModelSerializer):    
    product = ProductSerializer(read_only=True)
    class Meta:        
        model = DefaultCart        
        fields = (
            'product',
            'description',
            'default'
        )   
        read_only_fields = ('id',)
class DefaultCartSerializer(serializers. ModelSerializer): 
    product_id =   serializers.IntegerField(
            required=True,
            validators=[UniqueValidator(queryset=DefaultCart.objects.all())]
            )
    name = serializers.SerializerMethodField('get_product_name')
    product_code = serializers.SerializerMethodField('get_product_product_code')
    price = serializers.SerializerMethodField('get_product_price')
    photo = serializers.SerializerMethodField('get_product_photo')
    link_to_amazon = serializers.SerializerMethodField('get_product_link_to_amazon')
    class Meta:        
        model = DefaultCart        
        fields = (
            'id',
            'product_id',
            'description',
            'default',
            'name',
            'product_code',
            'price',
            'photo',
            'link_to_amazon'
        )   
        read_only_fields = ('id',)

    def get_product_name(self, obj):
        return obj.product.name

    def get_product_product_code(self,obj):
        return obj.product.product_code

    def get_product_price(self, obj):
        return obj.product.price

    def get_product_photo(self, obj):
        return obj.product.photo

    def get_product_link_to_amazon(self, obj):
        return obj.product.link_to_amazon
views.py

def index(request):
    # retrive all default_carts or create new default_cart
    if request.method == 'GET':
        default_carts = DefaultCart.objects.all()
        serializer = DefaultCartSerializer(default_carts, many=True)
        return Response(serializer.data)

在这里,我通过在serializers.py中执行以下操作解决了我的问题

class ProductSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Product
        fields=(
            'id','name','product_code','description','price','photo','link_to_amazon'
        )

class DefaultCartSerializer(serializers. HyperlinkedModelSerializer):    
    product = ProductSerializer(read_only=True)
    class Meta:        
        model = DefaultCart        
        fields = (
            'product',
            'description',
            'default'
        )   
        read_only_fields = ('id',)
class DefaultCartSerializer(serializers. ModelSerializer): 
    product_id =   serializers.IntegerField(
            required=True,
            validators=[UniqueValidator(queryset=DefaultCart.objects.all())]
            )
    name = serializers.SerializerMethodField('get_product_name')
    product_code = serializers.SerializerMethodField('get_product_product_code')
    price = serializers.SerializerMethodField('get_product_price')
    photo = serializers.SerializerMethodField('get_product_photo')
    link_to_amazon = serializers.SerializerMethodField('get_product_link_to_amazon')
    class Meta:        
        model = DefaultCart        
        fields = (
            'id',
            'product_id',
            'description',
            'default',
            'name',
            'product_code',
            'price',
            'photo',
            'link_to_amazon'
        )   
        read_only_fields = ('id',)

    def get_product_name(self, obj):
        return obj.product.name

    def get_product_product_code(self,obj):
        return obj.product.product_code

    def get_product_price(self, obj):
        return obj.product.price

    def get_product_photo(self, obj):
        return obj.product.photo

    def get_product_link_to_amazon(self, obj):
        return obj.product.link_to_amazon

请添加视图并序列化我是否已更新它。同时添加您的模式。p我已在此处添加了我的模型