Сохранение нескольких реляционных объектов по внешнему ключу django
Я хочу сделать отношение один ко многим между моделями и в Django для этого нужно использовать ForeignKey. Я буду записывать идентификаторы реляционных объектов в массив из фронтенда, но я запутался, как я сохраню эти множественные реляционные объекты в нем? Каждый номер пакета может иметь несколько тегов, но теги будут иметь только один номер пакета.
models.py
class Tag(models.Model):
name = models.CharField(max_length=255, default='')
description = models.CharField(max_length=255, default='')
singleline = models.ManyToManyField(Singleline)
class Meta:
db_table = 'tags'
class PackageRoom(models.Model):
name = models.CharField(max_length=255, default='')
tags = models.ForeignKey(Tag, on_delete=models.PROTECT)
class Meta:
db_table = 'package_rooms'
объект JSON, который я получу от фронтенда
{
"name": "Test Room",
"tags": [1, 2, 3, 4, 5] // IDs of Tags
}
Вы можете использовать PrimaryKeyRelatedField
в своем сериализаторе и установить его many=True
:
class PackageSerializer(serializers.ModelSerializer):
tags = serializers.PrimaryKeyRelatedField(queryset=PackageRoom.objects.all(), many=True)
class Meta:
model = PackageRoom
fields = ("name", "tags")
Документы это: https://www.django-rest-framework.org/api-guide/relations/#primarykeyrelatedfield