Dies ist eine Folgefrage zu dieser Frage.
Ich möchte den Import von Klassen aus einer django models.py-Datei automatisieren und dann jede bei registrieren admin.site.register(). Hier ist mein Code:
from django.contrib import admin
import inspect
from . import models
for name, obj in inspect.getmembers(models):
if inspect.isclass(obj):
admin.site.register(obj)
Dieser Code löst einen TypeError aus: „Typ“-Objekt ist nicht iterierbar.
Das OP hat diese Frage als beantwortet markiert und ich‘ Ich habe mehrere andere Beispiele gefunden, in denen dieser Code präsentiert wird. Ich habe auch die Dokumentation hier überprüft und nichts gefunden, was darauf hindeuten würde, dass dies falsch ist.
Vollständige Rückverfolgung:
Bills-MacBook-Pro:Pro billarmstrong$ python manage.py runserver/anaconda3/lib/python3.6/site-packages/django/db/models/base.py:309:RuntimeWarning: Model 'ProWP.p_item' was already registered. Reloading models is not advised as it can lead to inconsistencies, most notably with related models. new_class._meta.apps.register_model(new_class._meta.app_label, new_class)/anaconda3/lib/python3.6/site-packages/django/db/models/base.py:309:RuntimeWarning: Model 'ProWP.p_item' was already registered. Reloading models is not advised as it can lead to inconsistencies, most notably with related models.
new_class._meta.apps.register_model(new_class._meta.app_label, new_class)
Unhandled exception in thread started by
Traceback (most recent call last):
File "/anaconda3/lib/python3.6/site-packages/django/utils/autoreload.py", line 225, in wrapper
fn(*args, **kwargs)
File "/anaconda3/lib/python3.6/site-packages/django/core/management/commands/runserver.py", line 112, in inner_run
autoreload.raise_last_exception()
File "/anaconda3/lib/python3.6/site-packages/django/utils/autoreload.py", line 248, in raise_last_exception
raise _exception[1]
File "/anaconda3/lib/python3.6/site-packages/django/core/management/__init__.py", line 327, in execute
autoreload.check_errors(django.setup)()
File "/anaconda3/lib/python3.6/site-packages/django/utils/autoreload.py", line 225, in wrapper
fn(*args, **kwargs)
File "/anaconda3/lib/python3.6/site-packages/django/__init__.py", line 24, in setup
apps.populate(settings.INSTALLED_APPS)
File "/anaconda3/lib/python3.6/site-packages/django/apps/registry.py", line 120, in populate
app_config.ready()
File "/anaconda3/lib/python3.6/site-packages/django/contrib/admin/apps.py", line 23, in ready
self.module.autodiscover()
File "/anaconda3/lib/python3.6/site-packages/django/contrib/admin/__init__.py", line 26, in autodiscover
autodiscover_modules('admin', register_to=site)
File "/anaconda3/lib/python3.6/site-packages/django/utils/module_loading.py", line 47, in autodiscover_modules
import_module('%s.%s' % (app_config.name, module_to_search))
File "/anaconda3/lib/python3.6/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "", line 994, in _gcd_import
File "", line 971, in _find_and_load
File "", line 955, in _find_and_load_unlocked
File "", line 665, in _load_unlocked
File "", line 678, in exec_module
File "", line 219, in _call_with_frames_removed
File "/Users/billarmstrong/Documents/GitHub/Core/WebDataCollect/Pro/ProWP/admin.py", line 7, in
admin.site.register(obj)
File "/anaconda3/lib/python3.6/site-packages/django/contrib/admin/sites.py", line 102, in register
for model in model_or_iterable:
TypeError: 'type' object is not iterable
Nach runserver gibt es ein zweites Mal eine neue Warnung – aber das war nicht Teil des ursprünglichen Fehlers. Ich habe alles als Referenz beigefügt. Das p_item ist ein Klassenobjekt in models.py
Final Edit
Die oben erwähnte Warnung war das Ergebnis von ein schlampiges Ausschneiden/Einfügen, das eine Klasse dupliziert hat. Es ist für die ursprüngliche Frage oder die Antwort unten irrelevant.
Dies ist eine Folgefrage zu dieser Frage. Ich möchte den Import von Klassen aus einer django models.py-Datei automatisieren und dann jede bei registrieren admin.site.register(). Hier ist mein Code: [code]from django.contrib import admin import inspect from . import models
for name, obj in inspect.getmembers(models): if inspect.isclass(obj): admin.site.register(obj) [/code] Dieser Code löst einen TypeError aus: „Typ“-Objekt ist nicht iterierbar. Das OP hat diese Frage als beantwortet markiert und ich‘ Ich habe mehrere andere Beispiele gefunden, in denen dieser Code präsentiert wird. Ich habe auch die Dokumentation hier überprüft und nichts gefunden, was darauf hindeuten würde, dass dies falsch ist. Vollständige Rückverfolgung: [code]Bills-MacBook-Pro:Pro billarmstrong$ python manage.py runserver/anaconda3/lib/python3.6/site-packages/django/db/models/base.py:309:RuntimeWarning: Model 'ProWP.p_item' was already registered. Reloading models is not advised as it can lead to inconsistencies, most notably with related models. new_class._meta.apps.register_model(new_class._meta.app_label, new_class)/anaconda3/lib/python3.6/site-packages/django/db/models/base.py:309:RuntimeWarning: Model 'ProWP.p_item' was already registered. Reloading models is not advised as it can lead to inconsistencies, most notably with related models. new_class._meta.apps.register_model(new_class._meta.app_label, new_class) Unhandled exception in thread started by Traceback (most recent call last): File "/anaconda3/lib/python3.6/site-packages/django/utils/autoreload.py", line 225, in wrapper fn(*args, **kwargs) File "/anaconda3/lib/python3.6/site-packages/django/core/management/commands/runserver.py", line 112, in inner_run autoreload.raise_last_exception() File "/anaconda3/lib/python3.6/site-packages/django/utils/autoreload.py", line 248, in raise_last_exception raise _exception[1] File "/anaconda3/lib/python3.6/site-packages/django/core/management/__init__.py", line 327, in execute autoreload.check_errors(django.setup)() File "/anaconda3/lib/python3.6/site-packages/django/utils/autoreload.py", line 225, in wrapper fn(*args, **kwargs) File "/anaconda3/lib/python3.6/site-packages/django/__init__.py", line 24, in setup apps.populate(settings.INSTALLED_APPS) File "/anaconda3/lib/python3.6/site-packages/django/apps/registry.py", line 120, in populate app_config.ready() File "/anaconda3/lib/python3.6/site-packages/django/contrib/admin/apps.py", line 23, in ready self.module.autodiscover() File "/anaconda3/lib/python3.6/site-packages/django/contrib/admin/__init__.py", line 26, in autodiscover autodiscover_modules('admin', register_to=site) File "/anaconda3/lib/python3.6/site-packages/django/utils/module_loading.py", line 47, in autodiscover_modules import_module('%s.%s' % (app_config.name, module_to_search)) File "/anaconda3/lib/python3.6/importlib/__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "", line 994, in _gcd_import File "", line 971, in _find_and_load File "", line 955, in _find_and_load_unlocked File "", line 665, in _load_unlocked File "", line 678, in exec_module File "", line 219, in _call_with_frames_removed File "/Users/billarmstrong/Documents/GitHub/Core/WebDataCollect/Pro/ProWP/admin.py", line 7, in admin.site.register(obj) File "/anaconda3/lib/python3.6/site-packages/django/contrib/admin/sites.py", line 102, in register for model in model_or_iterable: TypeError: 'type' object is not iterable [/code] Nach runserver gibt es ein zweites Mal eine neue Warnung – aber das war nicht Teil des ursprünglichen Fehlers. Ich habe alles als Referenz beigefügt. Das p_item ist ein Klassenobjekt in models.py Final Edit Die oben erwähnte Warnung war das Ergebnis von ein schlampiges Ausschneiden/Einfügen, das eine Klasse dupliziert hat. Es ist für die ursprüngliche Frage oder die Antwort unten irrelevant.
Ich versuche Scrapy in Django implementieren. Dafür hat mir dieses Thema geholfen. Ich schrotte keine Website. myspider.py :
from scrapers.items import ScrapersItem
Ich versuche, einen benutzerdefinierten Tokenizer für ein Projekt zu erstellen, und erhalte die Fehlermeldung tokenizer.train_from_iterator:
class IngenxPreTokenizer:
def pre_tokenize(self, pretok:...
Ich habe aus irgendeinem Grund gerade mein Betriebssystem formatiert und daher Python und Django erneut installiert. Ich habe versucht, das Python-Projekt in derselben Umgebung wie das vorherige...
Das sind meine Modelle
class Author(models.Model):
full_name = models.CharField(max_length=100)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)...