gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 17:27:45 25 4
gpt4 key购买 nike

  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请求网址:http://localhost:8000/jobs/6/?access_token=bBN6BSLlYi8TXF3SkLEOMbtsKfD3xX&format=jsonDjango 版本:1.8.3异常类型:TypeError异常值:

    “长”对象不可迭代

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

** 我想要 job_category,它是一个用类别名称替换的 id**

  • 我需要帮助获取带有作业数据的类别名称 jobs_category 和 jobs_list 是通过现有数据库的逆向工程生成的两个单独的模型类。如果我正在做的这种方式可行或者其他方式可行,请帮助我。

  • 职位列表模型:

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

    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_category 列 jobs_list 表中。问题是从遗留数据库生成的模型类没有关系**

  • 最佳答案

    您可以覆盖 to_representation() 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

    关于python - 当从遗留数据库生成模型类时,如何在 django-rest 中序列化多个模型数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32324296/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com