Django 模型无法使用 Serialiser Class 通用视图识别模型字段
Django Model not recognising model fields using Serialiser Class Generic Views
我试图从 Django 模型中获取模板列表,但我总是遇到错误。
以下是每当我尝试检索作业模板列表时出现的错误。我收到此错误是因为它无法识别字段 template_name.
AttributeError: Got AttributeError when attempting to get a value for field template_name
on serializer ListJobTemplateSerializer
.
| The serializer field might be named incorrectly and not match any attribute or key on the Job
instance. | Original exception text was: 'Job' object has no attribute 'template_name'.
职位模型:
class Job (Dates, ID):
name = models.CharField(max_length=255, validators=[name_validation])
is_remote = models.BooleanField(default=False)
company = models.ForeignKey(to="companies.company", related_name="%(class)s", on_delete=models.CASCADE)
模板型号:
class JobTemplate(Dates, ID):
template_name = models.CharField(max_length=255)
jobs = models.ForeignKey(to="jobs.Job", related_name="%(class)s", on_delete=models.CASCADE)
objects = BulkUpdateOrCreateQuerySet.as_manager()
class Meta:
db_table = 'job_template'
def __str__(self):
return name
class ListJobTemplateSerializer(serializers.ModelSerializer):
"""List all templates of a job."""
job_title = serializers.CharField(source="name")
class Meta:
model = JobTemplate
fields = ["id", "job_title", "template_name"]
你的代码的问题是你的观点肯定有一些错误。您的模型和序列化程序都没有问题,没问题。由于提供的信息不足,可能的问题出在查询集中,因为您的查询集正在获取 Job 对象,而不是 JobTemplate 对象,您必须修改查询集以获取 JobTemplate。
可以帮助您查询集的参考文档:https://docs.djangoproject.com/en/3.2/ref/models/querysets/
我试图从 Django 模型中获取模板列表,但我总是遇到错误。 以下是每当我尝试检索作业模板列表时出现的错误。我收到此错误是因为它无法识别字段 template_name.
AttributeError: Got AttributeError when attempting to get a value for field
template_name
on serializerListJobTemplateSerializer
. | The serializer field might be named incorrectly and not match any attribute or key on theJob
instance. | Original exception text was: 'Job' object has no attribute 'template_name'.
职位模型:
class Job (Dates, ID):
name = models.CharField(max_length=255, validators=[name_validation])
is_remote = models.BooleanField(default=False)
company = models.ForeignKey(to="companies.company", related_name="%(class)s", on_delete=models.CASCADE)
模板型号:
class JobTemplate(Dates, ID):
template_name = models.CharField(max_length=255)
jobs = models.ForeignKey(to="jobs.Job", related_name="%(class)s", on_delete=models.CASCADE)
objects = BulkUpdateOrCreateQuerySet.as_manager()
class Meta:
db_table = 'job_template'
def __str__(self):
return name
class ListJobTemplateSerializer(serializers.ModelSerializer):
"""List all templates of a job."""
job_title = serializers.CharField(source="name")
class Meta:
model = JobTemplate
fields = ["id", "job_title", "template_name"]
你的代码的问题是你的观点肯定有一些错误。您的模型和序列化程序都没有问题,没问题。由于提供的信息不足,可能的问题出在查询集中,因为您的查询集正在获取 Job 对象,而不是 JobTemplate 对象,您必须修改查询集以获取 JobTemplate。
可以帮助您查询集的参考文档:https://docs.djangoproject.com/en/3.2/ref/models/querysets/