3

これはおそらくデータベースの設計上の問題ですが、それ以上はわかりませんでした。他のいくつかのモデルの中で、私はこれらのモデルを持っています:

class User(models.Model):
  name = models.CharField( max_length=40 )
  # some fields omitted
  bands = models.ManyToManyField( Band )

class Band(models.Model):
  creator = models.ForeignKey( User )
  # some fields omitted
  name = models.CharField( max_length=40 )

つまり、基本的に、バンドエンティティと多対多の関係を持つユーザーエンティティがあります。ねじれは、サイトでバンドを「作成」した特別なユーザーに、特別な編集機能を持たせたいということです。そこで先に進み、creator という ForeignKey を追加しました。Band がソース内の User の後に来たため、コードを実行できませんでした。だから私は前向きに宣言しclass Band(models.Model): passた。悲しいことに、これはあまり良い考えではないようです。現在、Band は django admin にインターフェース要素を表示しない唯一のモデルだからです (Bands モデルはそこにありますが、編集することはできません)。

私の質問は、これを適切に機能させるには、モデルにどのような変更を加える必要があるかということです。(もしあれば)

4

1 に答える 1

12

http://docs.djangoproject.com/en/dev/ref/models/fields/#foreignkeyを参照してください。

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

 class Car(models.Model):
      manufacturer = models.ForeignKey('Manufacturer')
      # ...

 class Manufacturer(models.Model):
      # ...
于 2009-07-28T15:11:35.103 に答える