Получение ошибки при попытке получить значение поля many to many в django

models.py

class Organisation(models.Model):
    """
    Organisation model
    """
    org_id = models.AutoField(unique=True, primary_key=True)
    org_name = models.CharField(max_length=100)
    org_code = models.CharField(max_length=20)
    org_mail_id = models.EmailField(max_length=100)
    org_phone_number = models.CharField(max_length=20)
    org_address = models.JSONField(max_length=500, null=True)
    product = models.ManyToManyField(Product, related_name='products')
    org_logo = models.ImageField(upload_to='org_logo/')
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    class Meta:
        db_table = "organisation_master"

    def __str__(self):
        return self.org_name

serializers.py

class Organisation_Serializers(serializers.ModelSerializer):
    product_name = serializers.CharField(source='product.product_name')
    class Meta:
        model = Organisation
        fields = ('org_id', 'org_name', 'org_address', 'org_phone_number', 'org_mail_id','org_logo','org_code','product','product_name')

Пока я пытаюсь получить значение названия продукта, я получаю ошибку "Got AttributeError when attempting to get a value for field product_name on serializer Organisation_Serializers. Поле сериализатора может быть названо неправильно и не соответствовать какому-либо атрибуту или ключу экземпляра Organisation. Оригинальный текст исключения был следующим: у объекта 'ManyRelatedManager' нет атрибута 'product_name'.

Можете ли вы, пожалуйста, помочь мне исправить эту проблему.Выкладываю трассировку ошибки.

поле "многие ко многим" не может быть сериализовано в charfield

product_name = serializers.CharField(source='product.product_name')

попробуйте следующее решение Django rest framework serializing many to many field

Сначала создайте сериализатор продукта в: ProductSerializer(serializers.Serializer): product = serializers.CharField(max_length=100)

class Organisation_Serializers(serializers.ModelSerializer):
product_name =  ProductSerializer(many=True)
class Meta:
    model = Organisation
    fields = ('org_id', 'org_name', 'org_address', 'org_phone_number', 'org_mail_id','org_logo','org_code','product','product_name')
Вернуться на верх