将非数据相关的方法放入Django模型中正确吗



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

这些方法应该在模型中,还是可以是一个单独的函数,接受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>')

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

还有一个提醒,你可能想使用f'admin:{cls._meta.model_name}_changelist'

最新更新