Python Django Rest框架:POST-RelatedField或PrimaryKeyRelatedField上的动态数据库

Python Django Rest框架:POST-RelatedField或PrimaryKeyRelatedField上的动态数据库,python,rest,django-rest-framework,relationship,django-queryset,Python,Rest,Django Rest Framework,Relationship,Django Queryset,我正在用DRF开发RESTFul服务,根据国家的不同,我有多个数据库(参见我的最后一个问题) 我现在在关系方面遇到了问题,我有两个模型:类别和子类别: class SubCategory(models.Model): objects = CountryQuerySet.as_manager() id = models.AutoField(primary_key=True,db_column='sub_category_id') name = models.Text

我正在用DRF开发RESTFul服务,根据国家的不同,我有多个数据库(参见我的最后一个问题)

我现在在关系方面遇到了问题,我有两个模型:类别和子类别:

class SubCategory(models.Model):    
    objects = CountryQuerySet.as_manager()
    id = models.AutoField(primary_key=True,db_column='sub_category_id')
    name = models.TextField()
    female_items_in_category = models.BooleanField()
    male_items_in_category = models.BooleanField()
    kids_items_in_category = models.BooleanField()
    category = models.ForeignKey('Category')

    class Meta:
        managed = True
        db_table = Constants().SUBCATEGORY
序列化程序是:

class SubCategorySerializer(serializers.ModelSerializer):  

    category = PrimaryKeyRelatedField(queryset=Category.objects.using('es').all())

    class Meta:
        model = SubCategory
        fields = ('id', 'name','female_items_in_category','male_items_in_category','kids_items_in_category','category')
如果我没有将queryset设置为正确的国家,它将失败,因为它不知道从哪里获取类别

问题就在这里

我已经在序列化程序上下文(在ModelViewSet中)中设置了国家/地区:

但是我找不到在序列化程序中获取self.context.get(Constants().COUNTRY)的正确方法


你有办法解决这个问题吗?谢谢

我找到了解决问题的方法:覆盖序列化程序中的方法get_字段:

    def get_fields(self, *args, **kwargs):
        fields = super(SubCategorySerializer, self).get_fields()
        country = self.context.get(Constants().COUNTRY)
        qs = Category.objects.using(country).all()
        fields['category'].queryset = qs
        return fields
这就行了

    def get_fields(self, *args, **kwargs):
        fields = super(SubCategorySerializer, self).get_fields()
        country = self.context.get(Constants().COUNTRY)
        qs = Category.objects.using(country).all()
        fields['category'].queryset = qs
        return fields