**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”对象具有
没有属性“公司”。
答案 0 :(得分:1)
对于源属性,您需要输入 JobPost 端的关系名称,因为它称为 cmpny_name
,您应该使用它。
并且您不应该使用 many=True
kwarg,因为它是 JobPost 端的 ForiegnKey 关系,每个帖子只与一个公司相关。
综合起来就是:
cmpny_name = CompanySerializer()