我是Django的新手,我试图了解Django Rest Framework的工作。我没有得到的并且我一直试图找出如何在DB中创建具有多对多关系的新记录。我可以阅读它并在JSON中检索它但我无法创建或修改它。 Django为我创建了一个索引表,但我不知道如何使用它。 〔实施例: 我有一个用户和用户标签。每个用户可以拥有更多标签,每个标签可以分配给更多用户。
class User(AbstractBaseUser, PermissionsMixin):
category_tags = models.ManyToManyField(CategoryTag, blank=True, null=True)
什么样的串行器以及我应该如何编写序列化器,以便为用户分配一些标签。例如,当注册新用户时,在注册期间他将选择一些将被分配给他的标签。 我可以创建一个新用户,但我不能使用m2m(写)。
非常感谢。
答案 0 :(得分:1)
我假设您在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]
}