1
現在、私はDjangoを使用してブログを構築しようとしています。私はこのエラーに数時間直面しています。私はこれがディレクトリとは何か関係があるのかどうかはよく分かりませんが、admin.pyファイルにモデルを登録しようとするとエラーが発生します。次のようにDjangoモジュールオブジェクトは反復不可能です
from django.contrib import admin
from .models import Post
# Register models
admin.site.register(Post)
ディレクトリが見える:
blog
models
Post
Category
admin.py
settings
static
templates
トレース:
Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0x7ffb589a67b8>
Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/django/utils/autoreload.py", line 225, in wrapper
fn(*args, **kwargs)
File "/usr/lib/python3.6/site-packages/django/core/management/commands/runserver.py", line 112, in inner_run
autoreload.raise_last_exception()
File "/usr/lib/python3.6/site-packages/django/utils/autoreload.py", line 248, in raise_last_exception
raise _exception[1]
File "/usr/lib/python3.6/site-packages/django/core/management/__init__.py", line 327, in execute
autoreload.check_errors(django.setup)()
File "/usr/lib/python3.6/site-packages/django/utils/autoreload.py", line 225, in wrapper
fn(*args, **kwargs)
File "/usr/lib/python3.6/site-packages/django/__init__.py", line 24, in setup
apps.populate(settings.INSTALLED_APPS)
File "/usr/lib/python3.6/site-packages/django/apps/registry.py", line 120, in populate
app_config.ready()
File "/usr/lib/python3.6/site-packages/django/contrib/admin/apps.py", line 23, in ready
self.module.autodiscover()
File "/usr/lib/python3.6/site-packages/django/contrib/admin/__init__.py", line 26, in autodiscover
autodiscover_modules('admin', register_to=site)
File "/usr/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 "/usr/lib/python3.6/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 "/home/hallak/Projects/hallak.io/hallak_blog/admin.py", line 5, in <module>
admin.site.register(Post)
File "/usr/lib/python3.6/site-packages/django/contrib/admin/sites.py", line 102, in register
for model in model_or_iterable:
TypeError: 'module' object is not iterable
ポスト:
from django.db import models
from django.utils import timezone
class Post(models.Model):
# Auto-generated ID
id = models.AutoField(primary_key=True)
# Title
title = models.CharField(max_length=100)
# Slug
slug = models.SlugField(max_length=100)
# Content
body = models.TextField()
# Timestamps
created_on = models.DateField(auto_now_add=True)
published_on = models.DateTimeField(blank=True, null=True)
# Category
category = models.ForeignKey('.Category', on_delete=models.DO_NOTHING)
# Author
author = models.ForeignKey('auth.User', on_delete=models.DO_NOTHING)
# Publish post
def publish(self):
self.published_date = timezone.now()
self.save()
def __str__(self):
return self.title
カテゴリー:
from django.db import models
class Category(models.Model):
# Auto-generated ID
id = models.AutoField(primary_key=True)
# Title
title = models.CharField(max_length=100)
# Slug
slug = models.SlugField(max_length=100)
# Timestamps
created_on = models.DateField(auto_now_add=True)
エラーがここに起こっている:https://github.com/django/django/blob/master/django/contrib/admin/sites.py#L100-L101
を私はレジスタラインすべてが正常に動作しますコメントをするたびに。代わりに、書き込みの
これは最初のエラーを解決しましたが、別のエラーを生成します。エラー: hallak_blog.Post.category:(fields.E300)フィールドは、インストールされていないか抽象であるモデル '.Category'とのリレーションを定義します。 hallak_blog.Post.category:(fields.E307)は、フィールドhallak_blog.Post.categoryが – hallaksec
モデルをinstalled.'されていない 『』「.category」が、アプリを怠惰参照して宣言された 『カテゴリー』にインポートする必要がありますPost.pyモジュールあなたはPostクラスで "Category"という名前を使用していますが、定義されていません。 .Category "から" Category "をインポートします。 – MihanEntalpo
あなたは本当にあなたのモデルを別々のファイルに入れてはいけません。これは動作させることができますが、PythonとDjangoを初めて使う人にとっては混乱します。両方の問題の原因ともなっています。それらを両方とも一つのmodels.pyに戻してください。 –