Django Rest Framework:POST上的动态数据库 - RelatedField或PrimaryKeyRelatedField

时间:2016-01-19 19:10:46

标签: python rest django-rest-framework relationship django-queryset

我正在使用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)的正确方法。

你有什么想法解决这个问题吗?谢谢!

1 个答案:

答案 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

这有效!