gpt4 book ai didi

django - 在 DRF 中为多对多创建记录

转载 作者:行者123 更新时间:2023-12-04 18:00:38 24 4
gpt4 key购买 nike

我是 Django 的新手,我正在尝试了解如何使用 Django Rest Framework。我没有得到并且我一直试图找出的是如何在具有多对多关系的数据库中创建新记录。我可以读取它并以 JSON 格式检索它,但我无法创建或修改它。 Django 为我创建了一个索引表,但我不知道如何使用它。例子:我有一个用户和用户标签。每个用户可以有更多标签,每个标签可以分配给更多用户。

class User(AbstractBaseUser, PermissionsMixin):
category_tags = models.ManyToManyField(CategoryTag, blank=True, null=True)

什么样的序列化程序以及我实际上应该如何编写序列化程序以便我可以为用户分配一些标签。例如,当一个新用户注册时,他会在注册过程中选择一些分配给他的标签。我可以创建新用户,但无法使用 m2m(写入)。

非常感谢。

最佳答案

我假设您在 JSON 中发布了类别 ID 列表。然后你可以将你的 create 方法调整为:

 def create(self, validated_data):
generated_password = get_random_string(length=8)

user = User.objects.create(
email = validated_data['email'],
full_name = validated_data['full_name']
)

user.set_password(generated_password)
user.save()

# loop over Categories and add many to many relationship
for cat_id in validated_data('category_tags'):
category = Category.objects.get(id=cat_id)
user.category_tags.add(category)
user.save()

return user

您的 JSON 应类似于此:

{
"email": "some@mail.de",
... //other user fields
"category_tags": [3, 12, 16]
}

关于django - 在 DRF 中为多对多创建记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35946796/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com