Python ';经理';对象没有属性'__获取项目';

Python ';经理';对象没有属性'__获取项目';,python,django,django-rest-framework,Python,Django,Django Rest Framework,我正在使用Django rest框架构建一个应用程序,我想在用户想要更改应用程序时更改应用程序的语言,因此我为应用程序中的每个动态标题创建了两个序列化程序,一个为英语,另一个为阿拉伯语,我想给另一个名为lang的参数来更改api视图的响应,以使用另一个序列化程序 ==>models.py class RewardSubCategory(models.Model): category = models.ForeignKey( 'RewardCategory', on_del

我正在使用Django rest框架构建一个应用程序,我想在用户想要更改应用程序时更改应用程序的语言,因此我为应用程序中的每个动态标题创建了两个序列化程序,一个为英语,另一个为阿拉伯语,我想给另一个名为lang的参数来更改api视图的响应,以使用另一个序列化程序

==>models.py

class RewardSubCategory(models.Model):
    category = models.ForeignKey(
        'RewardCategory', on_delete=models.DO_NOTHING)
    title = models.CharField(max_length=200)
    ar_title = models.CharField(max_length=200, null=True, blank=True)
    picture = models.ImageField(upload_to=file_upload)

    def __unicode__(self):
        return str(self.title)

class RewardCategory(models.Model):
    title = models.CharField(max_length=200)
    ar_title = models.CharField(max_length=200, null=True, blank=True)
    picture = models.ImageField(upload_to=file_upload)

    def __unicode__(self):
        return str(self.title)
==>serializers.py

class RewardSubCategorySerializer(serializers.ModelSerializer):
window = serializers.SerializerMethodField()
affilates = serializers.SerializerMethodField()

class Meta:
    model = models.RewardSubCategory
    fields = ('id', 'category', 'title', 'picture', 'window', 'affilates')
    depth = 1

def get_window(self, obj):
    windows = models.SubCategoryWindow.objects.filter(
        sub_category=int(obj.id))
    data = SubCategoryWindowSerializer(windows, many=True).data
    return data

def get_affilates(self, obj):
    affilates = models.affilate.objects.filter(sub_category=int(obj.id))
    data = AffilateSerializer(affilates, many=True).data
    return data


class ArabicRewardSubCategorySerializer(serializers.ModelSerializer):
window = serializers.SerializerMethodField()
affilates = serializers.SerializerMethodField()

class Meta:
    model = models.RewardSubCategory
    exclude = ('title')
    depth = 1

def get_window(self, obj):
    windows = models.SubCategoryWindow.objects.filter(
        sub_category=int(obj.id))
    data = SubCategoryWindowSerializer(windows, many=True).data
    return data

def get_affilates(self, obj):
    affilates = models.affilate.objects.filter(sub_category=int(obj.id))
    data = AffilateSerializer(affilates, many=True).data
    return data
==>views.py

class RewardSubCategoryViewSet(FilterSearch, viewsets.ReadOnlyModelViewSet):
"""
    ................. API V1 .................
    Returns subcategories
"""
authentication_classes = (TokenAuthentication,)
permission_classes = (permissions.LoggedInPermission,)
serializer_class = serializers.RewardSubCategorySerializer
queryset = models.RewardSubCategory.objects
filter_fields = ('category')

def get_serializer_class(self):
    lang = self.request.query_params.get('lang')
    if lang == "ar":
        return serializers.ArabicRewardSubCategorySerializer
    return serializers.RewardSubCategorySerializer
==>输入邮差查询参数lang=ar时出错

                    TypeError at /v1/reward-subcategories/
            'Manager' object has no attribute '__getitem__'

            Request Method: GET
            Request URL: http://127.0.0.1:8000/v1/reward-subcategories/?lang=ar
            Django Version: 1.11.23

正在为此路由调用哪个处理程序?这里的信息太多,不足以让我们重现问题。请创建一个@Bluetooth i;很抱歉,我还是新手,我不明白你所说的处理程序被调用是什么意思?
queryset=models.RewardSubCategory.objects
这应该是
queryset=models.RewardSubCategory.objects.all()
,因为在第一种情况下它返回model
Manager
实例,在第二种情况下返回queryset(这就是你需要的)