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)

Вернуться на верх