Flask RESTless删除多个主键



我有一个小问题Flask RESTless,也许你可以帮助我:)

我的SQL(和SQLAlchemy)中有一些表是N..N关系的结果,它们的主键是两列的和。例如

Table 1 Key / Table 2 Key / Some data
0             0             Bla
0             1             Blabla
1             0             Morebla
1             1             Silenceisgolden

如果我使用带有ID的GET动词,例如0,RESTless只使用"Table 1 Key"并返回0,0,Bla。

我可以使用查询语言(?q=)并得到0,0和0,1。

问题是:如何只选择带有PATCH或DELETE动词的一个?我只能DELETE或PATCH 0,0

希望这个问题是清楚的:)

多谢!

我最近也遇到过类似的问题。问题是flask-restless喜欢假设主键是非复合键。

然而,有一个非常好的解决方法。首先,您需要为端点启用multi-DELETE和multi-PATCH:

 manager.create_api(                                                              
      Your_Composite_Model,     # flask-sqlalchemy model class                                                                 
      methods=['GET', 'POST', 'DELETE', 'PATCH'],                                  
      allow_delete_many=True,                                                      
      allow_patch_many=True) 

此更改允许您使用flask-restless'查询参数删除或修补表中的项目,您可以使用该参数来过滤您希望删除的确切行。

下面是一个使用请求库的python脚本,用于删除上述复合表中的第二行(并且仅删除第二行):

import requests                                                                  
import json                                                                      
url = 'http://127.0.0.1:5000/api/your_composite_model'                              
headers = {'Content-Type': 'application/json'}                                   
filters = [                                                                      
    dict(name='table_1_key', op='eq', val='0'),                            
    dict(name='table_2_key', op='eq', val='1'),                    
]                                                                                
params = dict(q=json.dumps(dict(filters=filters)))                               
response = requests.delete(url, params=params, headers=headers)                                                                                     
print(response.json())                                                           

~

输出应该是:{u'num_deleted': 1}

相关内容

  • 没有找到相关文章

最新更新