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 的外键。代码无法运行,因为 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 回答