【问题标题】:django ModelSerializer pass variable to meta sub-classdjango ModelSerializer 将变量传递给元子类
【发布时间】:2020-05-09 01:30:11
【问题描述】:

我,试图找到最干净的实现来从 django 序列化程序中的元子类访问上下文

views.py:

import someapp.models as models
import someapp.serializers as serializer

def some_view(request, batch_id):
    exp_type = models.UploadModel.objects.filter(batch_id=batch_id).values()[0]['experiment_type']
    model_idx = get_obj_idx_from_exp(model_names, exp_type)
    use_model = model_objs[model_idx]
    model_data = use_model.objects.filter(batch_id=batch_id)
    list_data = serializer.GeneralSerializer(model_data, many=True, context={'model': use_model}).data
    ...

serializers.py

​​>
from rest_framework.serializers import ModelSerializer
from someapp import models

class GeneralSerializer(ModelSerializer):
    # can access self.context['model'] here
    class Meta:
    # can NOT access self.context['model'] here
    model = self.context['model']
    fields, _ = zip(*self.context['model'].display_fields())

【问题讨论】:

    标签: python-3.x django-rest-framework django-serializer


    【解决方案1】:

    serializers.py

    class GeneralSerializer(serializers.ModelSerializer):
    
        class Meta:
            model = None
    

    views.py

    class GeneralViewSet(viewsets.ModelViewSet):
    
         def get_queryset(self):
             model = self.kwargs.get('model')
             return model.objects.all()           
    
         def get_serializer_class(self):
             GeneralSerializer.Meta.model = self.kwargs.get('model')
             return GeneralSerializer
    

    在此处查看更多信息link

    【讨论】:

      猜你喜欢
      • 2013-01-25
      • 1970-01-01
      • 1970-01-01
      • 2019-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多