Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django的双下划线符号在这里不起作用_Python_Django - Fatal编程技术网

Python Django的双下划线符号在这里不起作用

Python Django的双下划线符号在这里不起作用,python,django,Python,Django,我将这两个答案结合在一起:在试图从嵌套对象中仅选择某些字段而没有任何成功的情况下,结果是返回所有表中的所有字段 序列化程序: class NameTestTypeSerializer(serializers.ModelSerializer): class Meta: model = TestTypeModel fields = 'name' class ExecutedTestSerializer(serializers.ModelSerializer)

我将这两个答案结合在一起:在试图从嵌套对象中仅选择某些字段而没有任何成功的情况下,结果是返回所有表中的所有字段

序列化程序:

class NameTestTypeSerializer(serializers.ModelSerializer):
    class Meta:
        model = TestTypeModel
        fields = 'name'

class ExecutedTestSerializer(serializers.ModelSerializer):
    test_type = NameTestTypeSerializer
    class Meta:
        model = ExecutedTestModel
        fields = ('id',  'result', 'test_type')
        depth = 1
型号:

class TestTypeModel(models.Model):

    id = models.AutoField(primary_key=True)
    name = models.CharField(null=False, max_length=255, unique=True)
    ........
    class Meta:
        db_table = 'TestType'

class ExecutedTestModel(models.Model):

    id = models.AutoField(primary_key=True)
    test_type = models.ForeignKey(TestTypeModel, to_field='id')
    result = models.IntegerField(null=False)
    class Meta:
        db_table = 'ExecutedTest'
视图集:

class ExecutedTestViewSet(viewsets.ModelViewSet):
    permission_classes = (IsAuthenticatedOrReadOnly,)
    serializer_class = ExecutedTestSerializer
    def get_queryset(self):
        queryset = ExecutedTestModel.objects.all().select_related('test_type').defer('test_type__executable' )
        return queryset

您是如何检查是否提取了可执行文件的?在django中,您可以访问延迟字段,它们是根据需要从db加载的


我相信问题不在下划线符号中,而是在序列化程序的定义中。

我使用djnago_rest_框架,我可以在那里看到获取的字段rest框架中的结果可以包含可执行字段的值,即使它在查询中被延迟。也就是说,延迟get_queryset中的字段不会导致rest框架排除该字段