Django Rest框架序列化程序验证其中一个的传递,但在另一个上失败

Django Rest框架序列化程序验证其中一个的传递,但在另一个上失败,django,django-rest-framework,Django,Django Rest Framework,以下是我目前拥有的: models.py: class Team(models.Model): label = models.CharField(max_length=128, unique=True) def __str__(self) -> str: return self.label class AppName(models.Model): label = models.CharField(max_length=128, unique=T

以下是我目前拥有的:

models.py:

class Team(models.Model):
    label = models.CharField(max_length=128, unique=True)

    def __str__(self) -> str:
        return self.label


class AppName(models.Model):
    label = models.CharField(max_length=128, unique=True)

    def __str__(self) -> str:
        return self.label
序列化程序.py

class TeamSerializer(serializers.HyperlinkedModelSerializer):

    class Meta:
        model = Team
        fields = [
            'id',
            'label'
        ]
class AppNameSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = AppName
        fields = [
            'id',
            'label'
        ]
这是我的职责:

    appname = AppNameSerializer(data={'label': request.POST.get('appname')})
    if appname.is_valid():
        appname = appname.save()

    team = TeamSerializer(data={'label': request.POST.get('team')})
    if team.is_valid():
        team = team.save()
其中request.POST.get'appname'是'foo name',request.POST.get'team'是'Chocobo骑士'

为什么appname.u有效或无效?而team.u的传球有效吗?它们实际上是相同的代码,我很困惑

TeamSerializer(data={'label': 'Chocobo Knights'}):
    id = IntegerField(label='ID', read_only=True)
    label = CharField(max_length=128, validators=[<UniqueValidator(queryset=Team.objects.all())>]) True
AppNameSerializer(data={'label': 'foo-app'}):
    id = IntegerField(label='ID', read_only=True)
    label = CharField(max_length=128, validators=[<UniqueValidator(queryset=AppName.objects.all())>]) False

序列化程序验证取决于数据库的状态


代码可能是相同的,但是如果团队表已经有一个Chocobo Knights,而AppName没有任何foo应用程序。。。不要期望两者的结果相同

等等,那么在DB中是否存在有效的检查?如果它已经存在,它会退出吗?
    appname = AppNameSerializer(data={'label': request.POST.get('appname')})
    if appname.is_valid():
        appname = appname.save()
    else:
        appname = AppName.objects.get(**appname.data)

    team = TeamSerializer(data={'label': request.POST.get('team')})
    if team.is_valid():
        team = team.save()
    else:
        team = Team.objects.get(**team.data)