简体   繁体   English

从旧版数据库生成模型类时,如何在Django-rest中序列化多个模型数据

[英]How to serialize multiple models data in django-rest when models classes are generated from legacy database

  1. Model classes are generated from existing database, do not show foreign keys relation in generated model classes. 模型类是从现有数据库生成的,在生成的模型类中不显示外键关系。

     $ python manage.py inspectdb $ python manage.py inspectdb > models.py 
  2. Goal is to get related data from multiple tables. 目标是从多个表中获取相关数据。

  3. Following is my serializer snippet: 以下是我的序列化器代码段:

     from .models import JobsList, JobsCategories class JobsCategoriesSerializer(serializers.ModelSerializer): class Meta: model = JobsCategories fields = ('name', 'id',) class JobsListSerializer(serializers.ModelSerializer): category = JobsCategoriesSerializer(source='job_category', many=True) class Meta: model = JobsList fields = ('job_title', 'category') 
  4. Error: Request Method: GET Request URL: http://localhost:8000/jobs/6 /?access_token=bBN6BSLlYi8TXF3SkLEOMbtsKfD3xX&format=json Django Version: 1.8.3 Exception Type: TypeError Exception Value: 错误:请求方法:GET请求URL: http:// localhost:8000 / jobs / 6 /?access_token = bBN6BSLlYi8TXF3SkLEOMbtsKfD3xX&format = json Django版本:1.8.3异常类型:TypeError异常值:

    'long' object is not iterable “长”对象不可迭代

5.1 The response is: 5.1响应为:

{"id":6,"userid":491,"company_id":4,"job_title":"Web Designer","job_info":"We require a web designer.","min_exp":0,"max_exp":1,"min_ctc":null,"max_ctc":null,"open_positions":0,"location":"18","hr_email":"","contact_number":"","job_category":3,"job_referred":"0","added_by":"0","status":"1","date_time":null,"expiry_date":null,"job_meta":"web graphics bodhan designer funvestfinancials","job_type":"0"}

** I want job_category which is an id replaced with category name** **我想要job_category,它是一个ID替换为类别名称**

  1. I need help to get category name with job data jobs_category and jobs_list are two separate model classes generated by reverse engineering from existing database. 我需要帮助以获取具有作业数据的类别名称Jobs_category和Jobs_list是通过逆向工程从现有数据库生成的两个单独的模型类。 Kindly help me if this is possible in this way I am doing or if it is doable in another. 如果可以通过这种方式实现,或者可以在另一种方式实现,请为我提供帮助。

  2. Job list model: 作业列表模型:

     class JobsList(models.Model): ..... job_category = models.IntegerField(blank=True, null=True) ..... 
  3. Category model: 类别模型:

     class JobsCategories(models.Model): name = models.CharField(max_length=255) status = models.CharField(max_length=1) class Meta: managed = False db_table = 'jobs_categories' def __unicode__(self): return '%s' % (self.name) 

    ** I need categories name whose id is in job_category column jobs_list table. **我需要类别名称,其ID在job_category列jobs_list表中。 Issue is the model classes generated from legacy database do not have relations ** 问题是从旧版数据库生成的模型类没有关系**

You can override the to_representation() method of the JobsListSerializer to get your desired response. 您可以覆盖to_representation()的方法JobsListSerializer得到您所期望的响应。

You need to do something like: 您需要执行以下操作:

class JobsListSerializer(serializers.ModelSerializer):
    class Meta:
        model  = JobsList
        ...

    def to_representation(self, obj):
        serialized_data = super(JobsListSerializer, self).to_representation(obj) # original serialized data
        job_category_id = serialized_data.get('job_category') # get job category id from original serialized data
        job_category = JobsCategories.objects.get(id=job_category_id) # get the object from db
        serialized_data['job_category'] = job_category.name # replace id with category name
        return serialized_data # return modified serialized data

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Django-rest:如何为自定义用户模型实现身份验证和权限? - Django-rest: How to implement authentication and permissions for custom User models? 在Django-Rest框架中使用模型 - Using Models in Django-Rest Framework django-rest-framework:如何序列化数据库模型的连接? - django-rest-framework: How to serialize join of database models? 如何在Django Rest API中序列化相关模型? - How to serialize related models in Django Rest API? 如何在Django中序列化模型? - How to serialize models in Django? Django REST框架将多个模型序列化为一个“时间轴” - Django REST Framework Serialize Multiple Models into one “Timeline” 当在请求中的某个字段内建模数据时,如何使用具有多对多字段和外键的 Django Rest Framework 模型序列化创建? - How to serialize creation with Django Rest Framework models with many-to-many field and foreign-key, when models data inside some field in request? 如何使用Django Rest Framework将多个模型序列化为一个用于层次结构的序列化器? - How to serialize multiple models into one serializer for hierarchy structure using Django Rest Framework? Django Rest Framework中如何序列化三个多对多关系的模型 - How to serialize three models with many to many relationships in Django Rest Framework 如何在Django-rest-framework中序列化具有自定义关系的2个模型? - How to serialize 2 models with custom relationship in django-rest-framework?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM