1

すべてのデータが正確に1人のユーザーに属し、ユーザーが自分のデータ(メールなど)にのみアクセスするアプリを作成しようとしています。私はこれをmodels.pyファイルで次のようにモデル化します。

from django.contrib.auth.models import User
from django.db import models
...

class Foo(models.Model):
    owner=ForeignKey(User, related_name='foos')

これはうまくいくようです。

python manage.py sql appFoo

を含むSQLを表示します

CREATE TABLE "appFoo_foo" (
    "id" integer NOT NULL PRIMARY KEY,
    "owner_id" integer NOT NULL REFERENCES "auth_user" ("id")
    ...

ただし、テスト目的で作成したユーザーを両方とも使用して削除しようとすると、問題が発生します。

User.objects.exclude(username='root').delete()

組み込みのdjango管理アプリを使用します。いずれの場合も、テーブルappFoo_fooにowner_idという名前の列がないというデータベースエラーが発生します。これはsyncdbを実行した後です。なぜこれが起こるのかについて何か考えはありますか?

4

1 に答える 1

0

これを尋ねる前に関連する質問を探したと誓いますが、データベースエラー:そのような列はありません:connect_connect.reciever_idは、質問するまで表示されませんでした。私の問題も同じでした。基本的に、モデルにフィールドを追加し、それに応じてsyncdbがデータベースを変更することを期待しましたが、明らかにそうではありません。私は走らなければなりませんでした

manage.py reset appFoo

再びsyncdbが続き、それは魅力のように機能しました。

編集:リセットは非推奨であり、代わりにフラッシュを使用できることを今読んでいます。

于 2012-05-27T04:50:13.253 に答える