0

これはmodels.pyのコードです

class Package(models.Model):
  name=models.CharField(max_length=300)
  version=models.CharField(max_length=300,blank=True)
  home_page=models.URLField(blank=True)
  summary=models.TextField()
  description=models.TextField(blank=True)
  keywords=models.TextField(blank=True)
  categories=models.ManyToManyField(Category,related_name='packages')



class Category(models.Model):
  topic=models.ForeignKey(Package, related_name="categories")

syncdb を実行しようとすると、「NameError カテゴリが定義されていません」と表示されます。最初にクラス カテゴリを配置し、次にパッケージを配置しようとすると、「NameError 名パッケージが定義されていません」と表示されます。

この問題から私を助けてください。

EDIT:私がデータベースで知っていることについての知識がほとんどないため、助けてくれてありがとう、ここのチュートリアルは間違っているよう ですhttp://toys.jacobian.org/presentations/2007/pycon/tutorials/beginning/ in Packages は多対多で、Category トピックのフィールドは Package への外部キーになりますが、外部キーは多対 1 の関係であるため、実装に問題があります。django は、「フィールド 'topic' のアクセサが m2m フィールド 'Package.categories' と衝突する」という方法でそれを伝えようとしていると思います。フィールド 'topic' の逆引きクエリ名が m2m フィールド ' " と競合しています 正しいですか?

4

2 に答える 2

0

「まだ定義されていないモデルに関係を作成する必要がある場合は、モデル オブジェクト自体ではなく、モデルの名前を使用できます...」

class Package(models.Model):
   ...
  categories=models.ManyToManyField('Category', related_name='packages')
于 2012-09-22T17:37:49.267 に答える
0

を定義するときに引用符を追加しますcategory ManyToManyField。への変更:

categories=models.ManyToManyField('Category',related_name='packages')

理由:Categoryそのフィールドを追加するときに定義されていないため、django が後で解決できるように引用符を追加する必要があります。

于 2012-09-22T17:39:30.520 に答える