当我通过API发布时,我希望序列化程序不会复制标记(如果存在同名的标记)。
我尝试添加" unique"到" name"的模型领域在课程标签中,但这不起作用 - 它不允许我创建链接到存在的标签的其他电影。
检查字段" name"已存在(案例不敏感)。
如果标签"名称"存在,只需创建与FK的关系 现有标签名称&新电影
如果标签"名称"不存在,创建它
class Tag(models.Model):
name = models.CharField("Name", max_length=5000, blank=True)
taglevel = models.IntegerField("Tag level", blank=True)
def __str__(self):
return self.name
class Movie(models.Model):
title = models.CharField("Whats happening?", max_length=100, blank=True)
tag = models.ManyToManyField('Tag', blank=True)
def __str__(self):
return self.title
class TagSerializer(serializers.ModelSerializer):
taglevel = filters.CharFilter(taglevel="taglevel")
class Meta:
model = Tag
fields = ('name', 'taglevel', 'id')
class MovieSerializer(serializers.ModelSerializer):
tag = TagSerializer(many=True, read_only=False)
info = InfoSerializer(many=True, read_only=True)
class Meta:
model = Movie
fields = ('title', 'tag')
def get_or_create(self, validated_data):
tags_data = validated_data.pop('tag')
task = Task.objects.get_or_create(**validated_data)
for tag_data in tags_data:
task.tag.get_or_create(**tag_data)
return task
get_or_create不起作用(在此跟踪:http://dpaste.com/2G0HESS)因为它告诉我AssertionError:默认情况下.create()
方法不支持可写嵌套字段。