8

シナリオ

ユーザー(モデルに組み込まれたdjangoの認証)とレポートが多対多の関係を持つ基本的なDjangoアプリがあります。

問題

Django は、この関係を処理するための対応するテーブルを作成しません。私のアプリケーションは と呼ばれreportsます。reportを作成してユーザーを割り当てようとすると、管理システムでエラーが発生します。テーブルをクエリしようとしますが、reports_report_users存在しないため失敗します。

models.py コード

 from django.db import models
 from django.contrib.auth.models import User
 class Report(models.Model):
     name = models.CharField(max_length=30, blank=False)
     users = models.ManyToManyField(User, related_name='reports')
     def __unicode__(self):
         return self.name

試みられた解決策

  1. このリンクを参照として使用: https://docs.djangoproject.com/en/1.4/topics/db/examples/many_to_many/
  2. manage.py syncdb300回実行しました-わかりました、1回だけですが、エラーはなく、SQLite dbを検査しても追加のテーブルは作成されませんでした:(
4

2 に答える 2

1

最初の同期後に Report モデルに追加したようです。したがって、djangoがネイティブに実行しない移行を扱っています。

まず、SQL の出力を調べて、多対多の関係のテーブル作成命令がそこにあることを確認します。

python manage.py sqlall

これが移行であり、django がネイティブに処理しないことが問題であると仮定すると、次の 3 つのオプションがあります。1) このアプリのすべての db テーブルを削除してから、syncdb を再度実行します。2) テーブルを手動で作成します (sqlall コマンドから create sql をコピーして貼り付けるのはかなり簡単です)。 3) South のような移行フレームワークの使用を開始します。

長期的には、南部を学ぶための投資に感謝するでしょう。短期的には、DB ファイルを削除するのが最速です。

于 2013-01-08T18:27:43.997 に答える
0

db ファイルを削除して、manage.py syncdb を再度実行しましたか?

于 2013-01-08T18:04:08.527 に答える