Nano Hash - криптовалюты, майнинг, программирование

Django: декоратор регистрации администратора для пользовательского класса сайта администратора

Итак, я хочу настроить страницу администратора с помощью класса AdminSite, как описано в документы.

from django.contrib.admin import AdminSite
from .models import MyModel

class MyAdminSite(AdminSite):
    site_header = 'Monty Python administration'

admin_site = MyAdminSite(name='myadmin')

Но вместо использования admin_site.register(MyModel) я хотел бы использовать декоратор регистра, например

from django.contrib.admin import ModelAdmin

@admin_site.register(MyModel)
class MyModelAdmin(ModelAdmin):
    pass

Однако это только выдает ошибку TypeError: 'NoneType' object is not callable. Есть ли сейчас декоратор регистрации для подклассов AdminSite в Django (1.9) или я что-то упустил?

02.05.2016

Ответы:


1

Вы можете использовать аргумент ключевого слова site следующим образом:

@admin.register(MyModel, site=MyAdminSite)

from django.contrib import admin
...

@admin.register(MyModel, site=MyAdminSite)
class MyModelAdmin(ModelAdmin):
    pass

Документы по декоратору реестра:
https://docs.djangoproject.com/en/1.9/ref/contrib/admin/#the-register-decorator

26.10.2016
  • На самом деле это @admin.register(MyModel, site=admin_site) 03.06.2018
  • Вы также можете использовать partial из functools и сделать: myadmin_register = partial(admin.register, site=admin_site) Затем вы можете использовать декоратор @myadmin_register всего с @myadmin(MyModel). 03.06.2018

  • 2

    Я не уверен, что вы уже поняли это. Но я вижу, что у вас нет подкласса admin.ModelAdmin в вашем классе администратора.

    @admin_site.register(MyModel)
    class MyModelAdmin(admin.ModelAdmin):
        pass
    
    02.08.2016
  • Хорошо, я сделал. Я только что импортировал как from django.contrib.admin import ModelAdmin. 02.08.2016

  • 3
    class MyAdminSite(AdminSite):
        ...
    
    admin_site = MyAdminSite()
    
    @admin_site.register(MyModel)
    def ...
    

    TypeError: 'NoneType' object is not callable вызвано тем, что admin_site.register вызывает метод register из AdminSite.

    Вы должны использовать django.contrib.admin.register правильный декоратор:

    from django.contrib import admin
    
    @admin.register(MyModel, site=admin_site)
    class MyModelAdmin(ModelAdmin):
        ...
    
    11.06.2021
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..