Django Rest框架动态模式序列化器

时间:2019-05-06 08:34:59

标签: python django django-models django-rest-framework

我有一个模型,其中包含所有其他混合表的架构(这意味着一些关系字段和JSON字段内的某些字段)

例如。

class DynamicSchema(models.Model):
# Fields
model_name = models.CharField(max_length=255,unique=True)
slug = extension_fields.AutoSlugField(populate_from='model_name', blank=True)
created = models.DateTimeField(auto_now_add=True, editable=False)
last_updated = models.DateTimeField(auto_now=True, editable=False)
schema_data = JSONField(default=list)
class Meta:
    ordering = ('-created',)

def __unicode__(self):
    return u'%s' % self.slug

def get_absolute_url(self):
    return reverse('api_dynamicschema_detail', args=(self.slug,))


def get_update_url(self):
    return reverse('api_dynamicschema_update', args=(self.slug,))

所有其他模型,例如一些固定字段和一个json字段:

class Customer(models.Model):

# Fields
name = models.CharField(max_length=255,unique=True)
slug = extension_fields.AutoSlugField(populate_from='name', blank=True)
created = models.DateTimeField(auto_now_add=True, editable=False)
last_updated = models.DateTimeField(auto_now=True, editable=False)
details = JSONField(default=dict)


class Meta:
    ordering = ('-created',)

def __unicode__(self):
    return u'%s' % self.slug

def get_absolute_url(self):
    return reverse('api_customer_detail', args=(self.slug,))


def get_update_url(self):
    return reverse('api_customer_update', args=(self.slug,))

在客户模型中,我有一个字段详细信息,它是JSON类型。在json字段中,架构将在DynamicSchema表中定义

如何使用DynamicSchema中的动态字段定义序列化程序以制作API

例如:

在动态模式表中:

 model_name= 'Customer'
    schema_data={first_name:'text',second_name:'text',age:'number'}
    .....

现在,我的客户API应该为以下所有字段提供所有字段,包括搜索排序过滤器..etc等所有操作。是否可以根据动态模式表创建动态序列化器?

name
slug
created
last_updated
first_name
second_name
age

0 个答案:

没有答案