Правильно ли использовать методы, не связанные с данными, в модели Джанго? - PullRequest
0 голосов
/ 23 сентября 2019

Мы с коллегой обсуждаем, правильно ли иметь методы моделирования, которые не имеют прямого отношения к данным модели.Например, методы, которые генерируют ссылки для страниц администратора.

Должны ли эти методы быть в модели, или это может быть отдельная функция, которая принимает имя_приложения в качестве аргумента?

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>')

1 Ответ

1 голос
/ 23 сентября 2019

Это по сути не является неправильным, но я бы сказал, что оно должно входить в ваш admin.py, либо как отдельная функция, либо как пользовательский класс администратора / миксин.

Также заголовок, который вы, вероятно, захотитеиспользуйте f'admin:{cls._meta.model_name}_changelist'.

...