Форвардное заявление – в Джанго нет страницы администратора?

StackOverflow https://stackoverflow.com/questions/1194723

Вопрос

Вероятно, это проблема дизайна базы данных, но я не нашел лучшего решения.Среди нескольких других у меня есть эти модели:

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 )

Итак, по сути, у меня есть сущность пользователя, которая имеет много-ко-многим отношения с сущностью группы.Фишка в том, что я хочу, чтобы у специального пользователя, который "создал" группу на сайте, были специальные возможности редактирования.Поэтому я пошел дальше и добавил ForeignKey под названием Creator.Код не удалось запустить, поскольку в исходном коде Band находился после пользователя.Итак, я вперед заявил class Band(models.Model): pass.К сожалению, это не кажется хорошей идеей, потому что теперь Band — единственная модель, которая не отображает никаких элементов интерфейса в админке django (модель Bands есть, ее просто нельзя редактировать).

Мой вопрос: какие изменения мне следует внести в модели, чтобы эта работа работала правильно?(если есть)

Это было полезно?

Решение

Видеть: http://docs.djangoproject.com/en/dev/ref/models/fields/#foreignkey, в котором говорится:

Если вам нужно создать отношения на модели, которая еще не была определена, вы можете использовать имя модели, а не сам объект модели:

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

 class Manufacturer(models.Model):
      # ...
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top