AttributeError:尝试获取字段值时出现 AttributeError

时间:2021-07-15 12:08:31

标签: django django-rest-framework

**job model**
class JobPost(models.Model):
        creater = models.ForeignKey(
            settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
        title = models.CharField(max_length=255)
        job_type = models.ForeignKey(
            JobType, on_delete=models.CASCADE)
        job_loc = models.ForeignKey(JobLocation, on_delete=models.CASCADE)
        cmpny_name = models.ForeignKey(
            Company, related_name='company', on_delete=models.CASCADE)
        created_date = models.DateField(auto_now_add=True)
        job_description = models.CharField(max_length=255)
        salary = models.DecimalField(max_digits=10, decimal_places=2)
    
        def __str__(self):
            return str(self.job_type)

公司序列化程序

class CompanySerializer(serializers.ModelSerializer):
    class Meta:
        model = Company
        fields = '__all__'

后序列化器

class PostSerializer(serializers.ModelSerializer):
    # job_loc = JoblocationSerializer(many=True)
    companies = CompanySerializer(source='company', many=True)

    class Meta:
        model = JobPost
        fields = '__all__'

我遇到的错误

<块引用>

AttributeError: 在尝试获取值时出现 AttributeError 序列化程序 companies 上的字段 PostSerializer。序列化器字段 可能被错误地命名并且不匹配任何属性或键 JobPost 实例。原始异常文本为:“JobPost”对象具有 没有属性“公司”。

1 个答案:

答案 0 :(得分:1)

对于源属性,您需要输入 JobPost 端的关系名称,因为它称为 cmpny_name,您应该使用它。

并且您不应该使用 many=True kwarg,因为它是 JobPost 端的 ForiegnKey 关系,每个帖子只与一个公司相关。

综合起来就是:

cmpny_name = CompanySerializer()