Как использовать fieldsets, не вызывая ошибку registry ()? - PullRequest
0 голосов
/ 11 марта 2019

новичок в джанго. Я пытался изменить мою модель, чтобы получить 2 поля в одной строке. После прочтения документации на https://docs.djangoproject.com/en/2.1/ref/contrib/admin/ Я попробовал следующее в admin.py:

from django.contrib import admin
from .models import *


# Register your models here.

class NewsAdd(admin.ModelAdmin):
    fieldsets = [
        (None, {
            'fields': ('field1'('field2','field3'),'field4','field5','field6','field7')})]

class NewsDisplay(admin.ModelAdmin): 
    list_display = ('nick','hosty','msg','info','specjalista','od','do') 
    search_fields = ('nick','hosty','msg','info','specjalista','od','do') 

admin.site.register(News, NewsDisplay, NewsAdd)

Пожалуйста, не возражайте против отображения новостей и новостей в admin.site.register, поскольку они работают правильно.

Как только я добавляю NewsAdd в admin.site.register (), я получаю следующую ошибку:

Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0x00000000044C5E18>
Traceback (most recent call last):
  File "C:\Python36\lib\site-packages\django\utils\autoreload.py", line 225, in wrapper
    fn(*args, **kwargs)
  File "C:\Python36\lib\site-packages\django\core\management\commands\runserver.py", line 109, in inner_run
    autoreload.raise_last_exception()
  File "C:\Python36\lib\site-packages\django\utils\autoreload.py", line 248, in raise_last_exception
    raise _exception[1]
  File "C:\Python36\lib\site-packages\django\core\management\__init__.py", line 337, in execute
    autoreload.check_errors(django.setup)()
  File "C:\Python36\lib\site-packages\django\utils\autoreload.py", line 225, in wrapper
    fn(*args, **kwargs)
  File "C:\Python36\lib\site-packages\django\__init__.py", line 24, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "C:\Python36\lib\site-packages\django\apps\registry.py", line 120, in populate
    app_config.ready()
  File "C:\Python36\lib\site-packages\django\contrib\admin\apps.py", line 24, in ready
    self.module.autodiscover()
  File "C:\Python36\lib\site-packages\django\contrib\admin\__init__.py", line 26, in autodiscover
    autodiscover_modules('admin', register_to=site)
  File "C:\Python36\lib\site-packages\django\utils\module_loading.py", line 47, in autodiscover_modules
    import_module('%s.%s' % (app_config.name, module_to_search))
  File "C:\Python36\lib\importlib\__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 994, in _gcd_import
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 678, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "C:\Users\ji34ix\PycharmProjects\Diego\src\Hosting\Wmit_news\admin.py", line 21, in <module>
    admin.site.register(News, NewsDisplay, NewsAdd)
TypeError: register() takes from 2 to 3 positional arguments but 4 were given

Я уверен, что мне здесь не хватает чего-то очень простого, но я не могу решить это самостоятельно. Кто-нибудь, пожалуйста, помогите?

1 Ответ

1 голос
/ 12 марта 2019

Предполагается, что это один ModelAdmin класс.

admin.site.register имеет два аргумента: Model class и соответствующий ModelAdmin class. Вы пытаетесь передать три аргумента, что является незаконным.

list_display , search_fields и fieldsets могут быть объединены в одном определении класса.

class NewsAdmin(admin.ModelAdmin):
    fieldsets = [
        (None, {
            'fields': ('field1'('field2','field3'),'field4','field5','field6','field7')})]
    list_display = ('nick','hosty','msg','info','specjalista','od','do') 
    search_fields = ('nick','hosty','msg','info','specjalista','od','do') 

admin.site.register(News, NewsAdmin)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...