繁体   English   中英

Django 规则重用谓词

[英]Django rules re-using predicate

我创建了 2 个谓词,它们本质上非常相似。 一个使用一个列表,另一个使用 static 字符串。

@rules.predicate
def can_edit_items(user, fields):
    for perm in user.groups.all()
        if perm.name not in settings.fields[fields]
            return False
    return True

@rules.predicate
def can_edit_specific_item(user, field):
    for perm in user.groups.all()
        if perm.name not in settings.fields[field]
            return False
    return True

我的要求是can_edit_specific_item()必须通过传入单个字符串field_1来使用can_edit_items()

我已经尝试创建以下变体,但它似乎没有按我的意图工作

@rules.predicate
def can_edit_specific_item(user, field):
    for perm in user.groups.all()
        if perm.name not in can_edit_items[field]
            return False
    return True

您可以通过在can_edit_specific_item中设置 @ can_edit_specific_item并将其作为函数返回来定义 can_edit_specific_item,只需传入您的必填字段。

我有点不确定更广泛的要求,但也许这可能会奏效

def can_edit_specific_item(*field):
    @rules.predicate
    def predicate(user):
        return can_edit_items(user, field)
    return predicate

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM