Я очень новичок в Django и Django Rest Framework. У меня есть API, формат которого json, как показано ниже (упрощенная версия для простоты)
{
"title" : "Lorem ipsum is a dummy title",
"content" : "Lorem ipsum is a demo content"
"tags" : ["Movies", "Food"]
}
Вот как выглядит моя модель :
class Tag(models.Model):
class Meta:
verbose_name_plural = "Tags"
name = models.CharField(max_length=200)
def __str__(self):
return self.name
class Post(models.Model):
class Meta:
verbose_name_plural = "Posts"
title = models.CharField(max_length=255)
content = models.TextField()
tags = models.ManyToManyField(Tag, blank=True)
def __str__(self):
return self.title
Вот как выглядит мой сериализатор (теги, сообщения):
class TagSerializer(serializers.ModelSerializer):
class Meta:
model = Tag
fields = '__all__'
name = serializers.CharField(max_length=200)
def create(self, validated_data):
return Tag.objects.create(**validated_data)
def update(self, instance, validated_data):
instance.name = validated_data.get('name', instance.name)
instance.save()
return instance
class PostSerializer(serializers.ModelSerializer):
class Meta:
model = Post
fields = ('title', 'content', 'tags')
title = serializers.CharField(max_length=250)
content = serializers.CharField(max_length=1000)
tags = serializers.PrimaryKeyRelatedField(many=True, queryset=Tag.objects.all())
def create(self, validated_data):
tags = validated_data.pop('tags')
# [do i need to look for tags, create if not exists and retrieve the ids]
post = Post.objects.create(**validated_data)
for tg in tags:
post.tags.add(tg)
return post
def update(self, instance, validated_data):
instance.title = validated_data.get('title', instance.title)
instance.content = validated_data.get('content', instance.content)
tags = validated_data.pop('tags')
# [do i need to check for tags, create if not exists and retrieve the ids]
instance.save()
return instance
Поэтому я хочу сохранить подробности сообщения с тегами, чтобы они создавались, если они не существуют. Так как я новичок в django и остальных фреймворках, я не уверен, есть ли какие-то готовые функциональные возможности для достижения этой цели. Или мне нужно написать некоторый код в моем PostSerializer , который вручную создает новые теги и возвращает идентификаторы, а затем сохраняет их с моделью поста?
Дайте мне знать, если вам нужна дополнительная информация
Заранее спасибо