【问题标题】:How to use OR in Django Tastypie如何在 Django Tastypie 中使用 OR
【发布时间】:2016-01-12 07:00:59
【问题描述】:

您好,我的项目适用于 Django 框架和 AngularJS。我想要实现的是一旦用户登录,他们的状态变为 1,如果他是部门 1; 2 如果他在部门 2 下,依此类推。问题是某些部门 id 是 01 而不是 1。因此在 AngularJS 部分

$scope.dept = '{{ dept }}';
$scope.update_personlist = function(){
    console.log('Stage1: Loading Persons..... ');
    personresource_url.get({pm_id__startswith: $scope.dept},
        function(data){
            $scope.personlist = data['objects'][0]['person'];
            console.log($scope.personlist);
        },function(data, status){
            console.log('hi');
        }
    );
};

但是这段代码只会返回dept值1、2等而不是01。无论如何我们可以做personresource_url.get({pm_id__startswith: $scope.dept} OR pm_id__startswith: $scope.those startwith zero}这样的事情吗?意思是,如果 dept 1 人登录,他可以同时看到 dept1 和 dept 01 人。有人可以帮忙吗?我对 Tastypie 和 AngularJS 很陌生。在此先感谢。

【问题讨论】:

  • 部门“1”和“01”一样吗?如果是这样,你应该canonicalize你的数据库。即,当数据进入时,将其放入一种且只有一种格式。如果 1 不是 01,那么您可能需要一个额外的字段 (dept_group ?) 来指示哪些部门行属于一个组。
  • Rogers,无法修改数据库和格式。这就是这里的问题
  • 好吧,我确信在从 TastyPie 获取数据时可以查询 001011。不过我使用的是 Django Rest Framework,而不是 TastyPie。

标签: mysql angularjs django django-rest-framework tastypie


【解决方案1】:

您可以覆盖您的水合物函数来实现此目的:

def hydrate(self, bundle):
    if bundle.data['dept'][0] == "0":
        bundle.data['dept'] = bundle.data['dept'][1:]
    return bundle

这样只会保存不带前导“0”

【讨论】:

    猜你喜欢
    • 2019-02-08
    • 2013-01-15
    • 2016-09-17
    • 2017-12-25
    • 2013-11-02
    • 1970-01-01
    • 2014-03-17
    • 2023-03-29
    • 1970-01-01
    相关资源
    最近更新 更多