在外键django中保存多个关系对象
Save multiple relational objects in foreign key django
我想在模型之间建立一对多关系,在 Django 中,我们需要使用 ForeignKey。我将从前端的数组中获取多个关系对象的 ID,但我很困惑如何将这些多个关系对象保存在其中?每个包房可以有多个标签,但标签只会有一个包房。
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
我想在模型之间建立一对多关系,在 Django 中,我们需要使用 ForeignKey。我将从前端的数组中获取多个关系对象的 ID,但我很困惑如何将这些多个关系对象保存在其中?每个包房可以有多个标签,但标签只会有一个包房。
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