Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 如何实现数据库驱动的if-else语句?_Database_Django_If Statement_Django Models_Conditional Statements - Fatal编程技术网

Database 如何实现数据库驱动的if-else语句?

Database 如何实现数据库驱动的if-else语句?,database,django,if-statement,django-models,conditional-statements,Database,Django,If Statement,Django Models,Conditional Statements,我现在的编程任务是在数据库中实现if-elif-else构造,这样用户就可以轻松地编写条件语句 在条件块中,用户选择条件运算符、函数调用、设置参数并对照返回值进行检查-构成一系列条件测试 在执行块中,用户应该能够选择函数调用并设置参数-组成函数调用序列 我可以使用文本字段、编写解析器并使用eval(),但这不是一个选项: 保安 会有很多麻烦(或者你知道一个好的包裹吗?) 用户不需要编程知识 需要说明的是:任务和我想映射到数据库的示例条件语句: 问题:创建一个“if-elsif-else构造”,该

我现在的编程任务是在数据库中实现if-elif-else构造,这样用户就可以轻松地编写条件语句

在条件块中,用户选择条件运算符、函数调用、设置参数并对照返回值进行检查-构成一系列条件测试

在执行块中,用户应该能够选择函数调用并设置参数-组成函数调用序列

我可以使用文本字段、编写解析器并使用eval(),但这不是一个选项:

  • 保安
  • 会有很多麻烦(或者你知道一个好的包裹吗?)
  • 用户不需要编程知识
  • 需要说明的是:任务和我想映射到数据库的示例条件语句:

    问题:创建一个“if-elsif-else构造”,该构造由数据库驱动,易于单击,性能良好

  • 映射到数据库的条件语句。我想呆在Django ORM
  • 最大限度地提高性能:数据库中不应该乱扔对象,这样性能才是合理的。如果我有100k个不同的条件语句,我不希望每个语句的对象平均超过10个。越少越好
  • 最大化可能的复杂性:条件语句的类型和数量应该类似于书面条件语句的可能复杂性
  • 尽量减少难度:结构的使用应易于掌握。条件语句应该易于编写。用户不需要编程知识,但具有基本(人类)逻辑理解
  • 子任务:

  • 数据库模型(Django ORM)
  • 通用视图、模板和表单处理
  • 如果你没有任何问题-和一个很好的解决方案-请分享


    我目前正在研究一个解决方案,并最终将其发布。

    关于minmax任务描述的一个注释。我很清楚这些界限是相对的,可能会相互影响。我不确定你想问什么问题。请根据具体问题重新表述您的问题(请参阅);否则,我恐怕你的问题就要结束了。对你的问题的简短回答似乎是:你到底不明白什么?我想问的是如何在数据库中实现一个if-elif-else构造,它满足某些标准。你能说明你将如何用Q对象来实现这一点吗
    
    if something(p1, p2, px, ret) and someotherthing(p1, p2, px, ret):
        dothis(p1, p2, px)
        thendothat(p1, p2, px)
    elif somethought(p1, p2, px, ret) or someotherthougt(p1, p2, px, ret) and acrazythought(p1, p2, px, ret):
        thinkthis(p1, p2, px)
        thenthinkthat(p1, p2, px)
        finallyconclude(p1, p2, px)
    else:
        sayinaudiblethings(p1, p2, px)
        donothing(p1, p2, px)