2011-09-12 16 views
4

次のように私は、Djangoのモデルを持っている:Djangoのモデル

class Subscription(models.Model): 
    Transaction = models.ManyToManyField(Transaction, blank=True, null=True) 
    User = models.ForeignKey(User) 
    ...etc... 

私は次のようにUserモデルに多対多のフィールドを追加しようとしています:

SubUsers = models.ManyToManyField(User, blank=True, null=True) 

私はsyncdbの実行を実行したとき、私はこのエラーを取得:

AssertionError: ManyToManyField(<django.db.models.fields.related.ForeignKey object at 0x19ddfd0>) is invalid. First parameter to ManyToManyField must be either a model, a model name, or the string 'self' 

私は引用符でユーザーを包む場合は、私が代わりに取得する:

sales.subscription: 'User' has a relation with model User, which has either not been installed or is abstract. 

ユーザーモデルが正しくインポートされていることがわかりました。 2つのフィールドがUserモデルを指していると、何か問題が発生するのですか?事前にありがとうございます...

答えて

6

あなたのフィールドの名前がクラス名(ユーザー)と同じであるため、失敗する理由があります。小文字のフィールド名を使用してください。これは、DjangoとPythonの標準的な規則です。 Django Coding style

を参照してください。また、あなたはあなたの関係にrelated_nameパラメータを追加する必要があります。

class Subscription(models.Model): 
    user = models.ForeignKey(User) 
    sub_users = models.ManyToManyField(User, blank=True, null=True, related_name="subscriptions")