Как включить поля ManyToMany в DjangoRestFramework?
class EntityServiceSerializer(serializers.ModelSerializer):
class Meta:
model = Service
fields = '__all__'
class EntityCreateSerializer(serializers.ModelSerializer):
entity_service = EntityServiceSerializerThrough(read_only=True, source='serviceschedule_set', many=True)
class Meta:
model = Entity
fields = '__all__'
Модель выглядит следующим образом
class Entity(models.Model):
entity_service = models.ManyToManyField(Service, through='ServiceSchedule')
class ServiceSchedule(models.Model):
service = models.ForeignKey(Service, on_delete=models.CASCADE)
entity = models.ForeignKey(Entity, on_delete=models.CASCADE)
class Service(models.Model):
service_name = models.CharField(max_length=256, null=True)
slug = models.SlugField(max_length=128, unique=True, null=False, editable=False)
created_at = models.DateTimeField(editable=False, default=timezone.now)
updated_at = models.DateTimeField(default=timezone.now)
animal = models.ForeignKey(Animal, on_delete=models.CASCADE, default=None)
У меня есть эти сериализаторы (есть еще поля в модели сущности, но они не имеют значения, так как единственная проблема, которая у меня есть - это Many2Many). Дело в том, что когда я вставляю в body "entity_service": [1,2] в ответе я все равно получаю = []. Даже если в моей базе данных есть Сервисы с пк 1,2,3,4.
Знаете ли вы, как я могу заставить его работать?
Попробуйте без источника, поскольку имя поля совпадает с именем поля модели
class EntityCreateSerializer(serializers.ModelSerializer):
entity_service = EntityServiceSerializerThrough(read_only=True, many=True)
class Meta:
model = Entity
fields = '__all__'