django - AttributeError:尝试获取字段值时出现 AttributeError
问题描述
**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:尝试获取
companies
序列化程序上的字段值时出现 AttributeErrorPostSerializer
。序列化器字段可能命名不正确,并且与JobPost
实例上的任何属性或键都不匹配。原始异常文本是:“JobPost”对象没有属性“公司”。
解决方案
对于源属性,您需要从 JobPost 端放置关系名称,因为它被称为cmpny_name
您应该使用它。
并且您不应该使用many=True
kwarg,因为它与 JobPost 端的 ForiegnKey 关系每个帖子仅与一家公司相关。
因此,所有这些将是:
cmpny_name = CompanySerializer()
推荐阅读
- python - 字段“mobile_number”不存在(odoo12)
- recaptcha - Yeezy Supply SiteKey
- android - 为什么应用程序在 Play 商店的启动报告中崩溃?
- apache-kafka - 如何将单个 csv 文件缓存到 Kafka 中的 KTable 中?
- c - 宏是如何工作的?
- html - 覆盖 Bootstrap 4 导航栏链接颜色
- git - 有没有办法在第一次提交中恢复通过 .gitignore 忽略的文件?
- python - Python只运行一次while循环
- mysql - Heroku 部署错误:连接被拒绝
- c++ - 如果有人在我打开文件后覆盖了文件,会发生什么?