Python 3.x DRF序列化程序名称错误:名称';XYZSerializer';未定义,仅在获取另一个序列化程序时定义

Python 3.x DRF序列化程序名称错误:名称';XYZSerializer';未定义,仅在获取另一个序列化程序时定义,python-3.x,django-models,django-rest-framework,django-views,django-serializer,Python 3.x,Django Models,Django Rest Framework,Django Views,Django Serializer,我有多个序列化程序,独立运行良好。但是,在另一个序列化程序中获取它时,它会给出NameError:未定义名称“HostGroupSerializer” 在此行hostgroup=HostGroupSerializer中获取错误(many=True,required=False) HostGroupSerializer.py,它的许多字段表序列化程序。通过父项中的字段创建 class HostGroupSerializer(serializers.ModelSerializer): hos

我有多个序列化程序,独立运行良好。但是,在另一个序列化程序中获取它时,它会给出NameError:未定义名称“HostGroupSerializer”

在此行hostgroup=HostGroupSerializer中获取错误(many=True,required=False)

HostGroupSerializer.py,它的许多字段表序列化程序。通过父项中的字段创建

class HostGroupSerializer(serializers.ModelSerializer):
    host = MainHostSerializer()
    group = MainGroupSerializer()
    class Meta:
        model = HostGroup
        fields = (
            'id',
            'host', 
            'group'  
        )  
        read_only_fields = ['host', 'group']
    def create(self, validated_data):
        host_data = MainHost.objects.create(**validated_data.get('host'))
        group_data = MainGroup.objects.create(**validated_data.get('group'))

        conn = HostGroup.objects.create(
            host=host_data, 
            group=group_data
        )
        return conn 
主机组模型

class HostGroup(models.Model):
    host = models.ForeignKey(MainHost, on_delete=models.CASCADE)
    group = models.ForeignKey(MainGroup, on_delete=models.CASCADE)
具有多个字段的MainHost模型

class MainHost(models.Model):
    host_id =  models.IntegerField(verbose_name='HOST ID', primary_key=True)
    host_name =  models.CharField(verbose_name='HOST NAME', max_length=512)
    inventory = models.ForeignKey(related_name='inv_ins', on_delete=models.SET_NULL, to='hosts.MainInventory', blank=True, null=True)
    group = models.ManyToManyField(MainGroup, related_name='hostgroups', through ='HostGroup')
您可以像这样在
hostgroup=HostGroupSerializer(many=True,required=False)中传递源代码

class MainHostSerializer(serializers.ModelSerializer):
    group =serializers.PrimaryKeyRelatedField(queryset=HostGroup.objects.all(), many=True)
    hostgroup = HostGroupSerializer(many=True, required=False,source="hostgroup_set")
    class Meta:
        model = MainHost
        fields = (
            'host_id', 
            'host_name',
            'inventory',
            'group'
        )  
        depth = 2 
非常简单的解决方案:
在MainHostSerializer将HostGroupSerializer移到上面解决NameError问题之前,必须先定义HostGroupSerializer

仍然是相同的错误:hostgroup=HostGroupSerializer(many=True,required=False,source=hostgroup\u set)NameError:name'HostGroupSerializer'未定义请告诉我是否有人有任何想法?使用与此类似的方法,但获取NameError:
class MainHostSerializer(serializers.ModelSerializer):
    group =serializers.PrimaryKeyRelatedField(queryset=HostGroup.objects.all(), many=True)
    hostgroup = HostGroupSerializer(many=True, required=False,source="hostgroup_set")
    class Meta:
        model = MainHost
        fields = (
            'host_id', 
            'host_name',
            'inventory',
            'group'
        )  
        depth = 2