Python 将与数据无关的方法放入Django模型是否正确?

Python 将与数据无关的方法放入Django模型是否正确?,python,django,django-models,Python,Django,Django Models,我的同事和我正在讨论使用与模型数据不直接相关的模型方法是否正确。例如,为管理页面生成链接的方法 这些方法应该在模型中,还是可以是接受app_name作为参数的单独函数 class Resource(models.Model): ... @classmethod def __admin_list_url(cls): return reverse(f'admin:{cls._meta.db_table}_changelist') @classmeth

我的同事和我正在讨论使用与模型数据不直接相关的模型方法是否正确。例如,为管理页面生成链接的方法

这些方法应该在模型中,还是可以是接受app_name作为参数的单独函数

class Resource(models.Model):
    ...
    @classmethod
    def __admin_list_url(cls):
        return reverse(f'admin:{cls._meta.db_table}_changelist')

    @classmethod
    def get_admin_list_url(cls, caption='', query_string=''):
        if not caption:
            return '-'
        return mark_safe(f'<a href="{cls.__admin_list_url()}{query_string}" target="_blank">{caption}</a>')
类资源(models.Model):
...
@类方法
定义管理列表url(cls):
返回反向(f'admin:{cls.\u meta.db\u table}\u changelist')
@类方法
def get_admin_list_url(cls,标题=“”,查询字符串=“”):
如果没有标题:
返回“-”
返回标记_安全(f“”)

它本身并不是不正确的,但我认为它应该放在您的
admin.py
中,作为一个单独的函数或自定义管理类/mixin

还有一个提示,您可能希望使用
f'admin:{cls.\u meta.model\u name}\u changelist'