我正在尝试在我的一个基于 Django(non-rel, mongodb-engine) + Tastypie(non-rel) 构建的数据 API 中实现过滤。我想在我的主文档中的子文档上实现过滤。mongo 中的主要文件看起来像
{"user_name": "abc", "email": "abc@domain.com", "safety" :{"intra": True, "inter": False, "external": ['a', 'b']}}
子文档包含 2 个布尔字段和列表字段。在 mongo 中,我可以轻松地查询子文档及其字段,但是我无法在 API 级别实现它。django 模型看起来像这样
from djangotoolbox.fields import DictField, EmbeddedModelField
class UserSafety(models.Model):
user_name = models.CharField()
email = models.EmailField()
safety = DictField() <------- What to use here!
对应的 Tasty-pie 资源看起来像
from tastypie_nonrel.fields import DictField, EmbeddedModelField
class UserSafetyResource(ModelResource):
user_name = field.CharField(attribute='user_name')
email = fields.CharField(attribute='email')
safety = DictField(attribute='safety') <----What to use here!
# This part i want to add
class Meta:
filtering = ['safety.intra': ALL, 'safety.inter': ALL]
最终我希望它像在 HTTP 请求中一样工作
GET http://<server>/my_endpoint/usersafety?safety.intra=true
有什么想法可以实现吗?可能正在使用嵌入式类型字段吗?