Вы не говорите, ожидаете ли вы, что суперпользователь будет программистом или нет.
Если вы можете предположить это, вы можете включить код Python в поле базы данных и использовать eval
или exec
чтобы запустить его.
Например:
badge.function = """
def award_badge(user):
return False
"""
vars = {}
exec(badge.function, vars)
if vars["award_badge"](user):
...
Очевидно, что это имеет много возможностей для злоупотреблений или ошибок, и, конечно, не подойдет, если вы ожидаете, что нетехнические пользователи будутсоздание значков.
В зависимости от сложности правил, которые вам нужно создать, вы можете создать механизм правил для их выполнения.В этом случае вы создаете своего рода мини-язык, где каждый шаг в процессе принятия решения о присвоении значка или нет определяется строкой в базе данных.Механизмы правил - сложная тема, поэтому я не буду вдаваться в подробности.
Возможно, вам лучше жестко программировать правила для значков в своем коде, чем использовать любое из этих предложений.