将一个函数链接到模型条目

4
我看了一下与在Django模型中存储函数相关的这个问题的结果,但不确定最终使用的解决方案是否优雅...
我想要在数据库中的模型条目中有一个指向特定方法的指针。这是我如何做到的想法,但它似乎有点笨重:
class Results(models.Model):
    result_ref = models.CharField(...)
    result_name = models.CharField(...)
    result_unit = models.CharField(...)

def result_1_method():
    return "My custom result for entry 1"

...

>>> results_map = {1: result_1_method, 2: result_2_method, ...}
>>> required_result = Results.objects.get(results_ref='XAY')
>>> required_result_method = results_map[required_result.id]
>>> result = required_result_method()

有更好或更常用的解决方案吗?比如将一个方法存储为数据库条目的一部分?谢谢 :)
1个回答

1
你可以使用纯逻辑。你的方法实际上是最好的方法。然而,如果你的引用永远不会改变且是预定义的,则可以使用一个带有id的if和else方法。
if instance.id = 1:
    logic or method call here
else if instance.id = 2:
    different logic or method call here
...

但是请注意,这意味着您的案例/逻辑引用已经预定义,并且永远无法更改。因此,如果您需要动态引用,您的解决方案可能是最佳方法。

是的,我明白你的意思。你的例子很好,因为它允许我将所有代码都放在模型类中,但如果我开始有很多实例,它会变得非常庞大! - DrBuck
是的,没错。我想这取决于具体情况。 - Ian Kirkpatrick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接