当我基于ModelSerializer在django-rest0-framework中创建序列化器时,我将必须在Meta类中传递模型:
class ClientSerializer(ModelSerializer):
class Meta:
model = Client
我想创建一个通用的序列化器,该序列化器基于URL动态地包含模型。
到目前为止,我的设置包括urls.py和viewset:
urls.py:
url(r'^api/v1/general/(?P<model>\w+)', kernel_api_views.GeneralViewSet.as_view({'get':'list'}))
和views.py:
class GeneralViewSet(viewsets.ModelViewSet):
def get_queryset(self):
# Dynamically get the model class from myapp.models
queryset = getattr(myapp.models, model).objects.all()
return queryset
def get_serializer_class(self):
return getattr(myapp.serializers, self.kwargs['model']+'Serializer')
可以解决的问题:http :
//127.0.0.1 :
8000/api/v1/general/Client将Client.objects.all()作为queryset和ClientSerializer类作为序列化器
问题: 我该如何做才能调用“ GeneralSerializer”并在其中动态分配模型?
您可以执行以下操作:
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
在serializers.py
,我们定义GeneralSerializer
其model
在Meta
作为None
。model
在调用时,我们将覆盖该值get_serializer_class()
。
然后在我们的views.py
文件中,定义一个GeneralViewSet
withget_queryset()
并
get_serializer_class()
覆盖。
在中get_queryset()
,我们获取model
from的值kwargs
并返回该查询集。
在中
get_serializer_class()
,我们将model
forGeneralSerializer
的值设置为从中获得的值kwargs
,然后返回GeneralSerializer
。
问题内容: 我有以下表格示例。Thera可以是无限的分支机构和客户。我需要对该分支进行分组并计算他们的客户,然后用不同的列来显示它。 请注意,可以有无限的分支和客户,查询不仅必须在这种情况下有效。 在这种情况下,可接受的结果是: 示例SQL DATA 问题答案: 我认为写一个返回变量结构的流水线表函数虽然很复杂,但却是可能的。您的管道表函数将使用Oracle Data Cartridge接口和An
问题内容: 这是有关django的问题。我有一个模特说“汽车”。这将具有一些基本字段,例如“颜色”,“车辆所有者名称”,“车辆成本”。 我想提供一个表格,用户可以根据他要添加的汽车添加额外的字段。例如,如果用户添加“汽车”,则他将在运行时动态地在表单中添加其他字段,例如“汽车里程”,“校准制造商”。假设用户想要添加“卡车”,他将添加“可以运载的货物”,“许可证”等。 如何在Django中实现这一目
问题内容: 我在Android应用程序(带有Gson库)中实现Json反序列化存在一些问题 我已经上了这样的课 反序列化的调用是: 问题是调用后的result.posts列表包含一个LinkedTreeMap对象数组(具有正确的值,因此问题是反序列化)而不是MyJson对象。当我使用MyObject而不是T时,一切运行正常并且MyObject是正确的。 那么,有什么方法可以在不创建自定义反序列化器
问题内容: 这是我的情况: 当用户登录到我的网站时,我为给定的用户排队执行一系列任务(通常每个任务花费100毫秒的时间,每个用户有100毫秒的任务)。这些任务排队到默认的Celery队列中,而我有100的工人正在运行。我使用websockets在后端完成任务时向用户显示实时进度。如果我只有1个或2个用户处于活动状态,那么生活会很好。 现在,如果我有几个并发用户登录到我的站点,则后一个用户将排在初始
问题内容: 我的Flask路线中有一半需要使用变量或。如何创建到这些位置的链接? 需要一个参数传递给函数,但是我不能添加参数? 问题答案: 它使用关键字参数作为变量:
问题内容: 如何使用动态模板创建指令? 这就是我现在所拥有的,它可以正确显示标签。但是,我不确定如何在模板上附加其他HTML。或将2个模板合并为1个。 问题答案: 有类似的需求。做这份工作。(不完全确定这是否是“ THE”方法,仍然可以通过角度进行工作) http://jsbin.com/ebuhuv/7/edit-我的探索测试。 需要注意的一件事(以我的示例为例),我的要求之一是,一旦单击“保存