Объект 'GenericRelatedObjectManager' не имеет атрибута 'lang'

Я получаю ошибку 'GenericRelatedObjectManager' object has no attribute 'lang' когда делаю пост запрос.

В этом запросе и отношениях у меня есть две модели Translation и Tags.

class Translation(models.Model):
    """
    Model that stores all translations
    """
    content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE, null=True, blank=True)
    object_id = models.CharField(max_length=50, null=True, blank=True)
    content_object = GenericForeignKey()
    lang = models.CharField(max_length=5)
    field = models.CharField(max_length=255, null=True)
    translation = models.TextField(blank=True, null=True)

    def __unicode__(self):
        return u'%s : %s : %s' % (self.content_object, self.lang, self.field)

class Tags(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    DISEASE = 0
    TYPE = [(DISEASE, 'disease')]
    type = models.PositiveSmallIntegerField(choices=TYPE)
    name = GenericRelation(Translation)
    description = GenericRelation(Translation)

Я создаю миксин сериализатора для отправки одних и тех же данных в разные сериализаторы (не только в Tag, описанный ниже):

SerializerTranslationField и TagSerialzer:

TranslationSerialzer:

class TranslationSerializer(serializers.ModelSerializer):

    class Meta:
        model = Translation
        fields = [
        "id",
        "object_id",
        "lang",
        "translation",
        "field",
        "content_type"
        ]

    def to_representation(self, value):
        """
        Display translatios as:
        {"en_ire":"All lured!"}
        """
        list_of_dicts = {value.lang : value.translation}
    
        return list_of_dicts

    def to_internal_value(self, data):
  
        return data

Конечные точки GET и PUT работают нормально, как показано ниже:

    {
        "id": "b705fc65-6710-4218-9e38-9216f2f33197",
        "type": 0,
        "name": {
            "en": "What a good day!",
            "pt": "Que dia maravilhoso!"
        },
        "description": {
            "pt_br": "Bom dia",
            "en": "Good morning",
            "es": "Buenos dias"
        }
    },
    {
        "id": "c9d4443f-82f8-40f2-9f29-b46f320b12eb",
        "type": 0,
        "name": {
            "en": "hello",
            "es": "ola",
            "pt": "oi"
        },
        "description": {
            "pt_br": "Bom dia",
            "en": "Good morning",
            "es": "Buenos dias"
        }
    },
   . . .

Однако, когда я делаю пост, я получаю ошибку, упомянутую в заголовке, НО если я обновляю страницу, пост появляется как обычно.

Тем не менее, я могу написать только если many=False, потому что я не могу передать данные в many=True, так как он не принимает словарь с другими объектами, только список объектов для name и description.

Ошибка, которую я получаю при попытке передать many=True:

{
    "name": {
        "non_field_errors": [
            "Expected a list of items but got type \"dict\"."
        ]
    },
    "description": {
        "non_field_errors": [
            "Expected a list of items but got type \"dict\"."
        ]
    }
}

Моя нагрузка на пост:

     {
       "type": 0,
        "name": {
            "en": "hello",
            "es": "ola",
            "pt": "oi"
            },
        "description":{
            "pt_br": "Bom dia",
            "en": "Good morning",
            "es": "Buenos dias"
            }
       }  

Ожидается вход для many=True на TranslationSerializer:

{
    "type": null,
    "name": [],
    "description": []
}

Ожидается ввод many=False на TranslationSerializer, Где я могу сделать пост и получить 'GenericRelatedObjectManager':

{
    "type": null,
    "name": {
        "object_id": "",
        "lang": "",
        "translation": "",
        "field": "",
        "content_type": null
    },
    "description": {
        "object_id": "",
        "lang": "",
        "translation": "",
        "field": "",
        "content_type": null
    }
}
Вернуться на верх