#django #python-3.x #django-admin
#django #python-3.x #django-администратор
Вопрос:
Новое в django. Я пытался изменить свою модель, чтобы получить 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:Python36libsite-packagesdjangoutilsautoreload.py", line 225, in wrapper
fn(*args, **kwargs)
File "C:Python36libsite-packagesdjangocoremanagementcommandsrunserver.py", line 109, in inner_run
autoreload.raise_last_exception()
File "C:Python36libsite-packagesdjangoutilsautoreload.py", line 248, in raise_last_exception
raise _exception[1]
File "C:Python36libsite-packagesdjangocoremanagement__init__.py", line 337, in execute
autoreload.check_errors(django.setup)()
File "C:Python36libsite-packagesdjangoutilsautoreload.py", line 225, in wrapper
fn(*args, **kwargs)
File "C:Python36libsite-packagesdjango__init__.py", line 24, in setup
apps.populate(settings.INSTALLED_APPS)
File "C:Python36libsite-packagesdjangoappsregistry.py", line 120, in populate
app_config.ready()
File "C:Python36libsite-packagesdjangocontribadminapps.py", line 24, in ready
self.module.autodiscover()
File "C:Python36libsite-packagesdjangocontribadmin__init__.py", line 26, in autodiscover
autodiscover_modules('admin', register_to=site)
File "C:Python36libsite-packagesdjangoutilsmodule_loading.py", line 47, in autodiscover_modules
import_module('%s.%s' % (app_config.name, module_to_search))
File "C:Python36libimportlib__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:Usersji34ixPycharmProjectsDiegosrcHostingWmit_newsadmin.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. Что такое
NewsDisplay
?2. Он изменяет модель таким образом, чтобы отображались все свойства созданных элементов. Он находится в models.py . Код (не удается отформатировать — это код в комментариях): class NewsDisplay(admin. ModelAdmin): list_display = (‘nick’, ‘hosty’, ‘msg’, ‘info’, ‘specjalista’, ‘od’, ‘do’) search_fields = (‘nick’, ‘hosty’, ‘msg’, ‘info’, ‘specjalista’, ‘od’, ‘do’)
Ответ №1:
Предполагается, что это один 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)