Django : Ошибка атрибута сериализатора "один ко многим
Здравствуйте, у меня есть сериализатор моделей один ко многим, но когда я пытаюсь сделать запрос на нем, он говорит об ошибке атрибута.
Got AttributeError when attempting to get a value for field `project` on serializer `clientserializers`.
The serializer field might be named incorrectly and not match any attribute or key on the `Client` instance.
Original exception text was: 'Client' object has no attribute 'projectname'
Моя модель :
# client structure
class Project(db.Model):
project_name = db.CharField(max_length=50, unique=True)
def __str__(self):
return self.project_name
class Reason(db.Model):
reason_name = db.CharField(max_length=50, unique=True)
def __str__(self):
return self.reason_name
class Client(db.Model):
name = db.CharField(max_length=100)
project = db.ForeignKey(Project, on_delete=db.CASCADE, related_name="projectname")
reason = db.ForeignKey(Reason, on_delete=db.CASCADE, related_name="reasonname")
timestamp = db.DateTimeField(default=timezone.now())
Сериализатор как для проекта, так и для причины:
class projectserializers(serializers.ModelSerializer):
class Meta:
model = Project
fields =('id', 'project_name')
class reasonserializers(serializers.ModelSerializer):
class Meta:
model = Reason
fields =('id', 'reason_name')
class clientserializers(serializers.ModelSerializer):
project = projectserializers(source="projectname", many=True)
reason = reasonserializers(source="reasonname", many=True)
class Meta:
model = Client
fields = ('id', 'name', 'timestamp', 'project', 'reason')
Удалите значения аргументов source
и many
-
class clientserializers(serializers.ModelSerializer):
project = projectserializers()
reason = reasonserializers()
class Meta:
model = Client
fields = ('id', 'name', 'timestamp', 'project', 'reason')
Согласно стандартам PEP8, имена классов обычно должны использовать соглашение CapWords.
Итак, projectserializers
должно быть Projectserializers
(или ProjectSerializers
), а reasonserializers
должно быть Reasonserializers
(или ReasonSerializers
)