我正在使用DRF开发RESTFul服务,我有多个数据库,具体取决于国家/地区(请参阅我的上一个问题here)
我现在遇到关系问题,我有两个模型:Category和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')
序列化器是:
def get_serializer_context(self):
return {Constants().COUNTRY: self.kwargs.get(Constants().COUNTRY)}
如果我没有将查询集设置为正确的国家/地区,那么它就会失败,因为它不知道从何处获取该类别。
问题
我已经在序列化程序上下文中设置了国家/地区(在ModelViewSet中):
installTapOnBus
但我找不到在序列化程序中获取self.context.get(Constants()。COUNTRY)的正确方法。
你有什么想法解决这个问题吗?谢谢!
答案 0 :(得分:0)
好吧,我找到了解决问题的方法:我在序列化程序中覆盖get_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
这有效!