当从遗留数据库生成模型类时,如何在Djangorest中序列化多个模型数据

2024-09-29 21:46:29 发布

您现在位置:Python中文网/ 问答频道 /正文

  1. 模型类是从现有数据库中生成的,在生成的模型类中不显示外键关系。在

    $ python manage.py inspectdb
    
    $ python manage.py inspectdb > models.py
    
  2. 目标是从多个表中获取相关数据。

  3. 以下是我的序列化程序片段:

    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. 错误: 请求方法:GET 请求URL:http://localhost:8000/jobs/6/?access_token=bBN6BSLlYi8TXF3SkLEOMbtsKfD3xX&format=json Django版本:1.8.3 异常类型:TypeError 异常值:

    “long”对象不可编辑

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"}

**我想要用类别名称替换id的作业类别**

  1. 我需要帮助获得与作业数据的类别名称作业类别和作业列表是两个独立的模型类,由逆向工程从现有数据库生成。请帮助我,如果这是可能的这种方式,我正在做的,如果这是可行的另一种。

  2. 工作列表模型:

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

    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)
    

    **我需要id在job\u category列jobs\u list表中的类别名称。问题是从旧数据库生成的模型类没有关系**


Tags: py模型id数据库models作业job类别
1条回答
网友
1楼 · 发布于 2024-09-29 21:46:29

您可以重写JobsListSerializer^{}方法以获得所需的响应。在

你需要做一些事情,比如:

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

相关问题 更多 >

    热门问题