Python Django Rest框架:POST-RelatedField或PrimaryKeyRelatedField上的动态数据库
我正在用DRF开发RESTFul服务,根据国家的不同,我有多个数据库(参见我的最后一个问题) 我现在在关系方面遇到了问题,我有两个模型:类别和子类别: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
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