Форвардное заявление – в Джанго нет страницы администратора?
-
19-09-2019 - |
Вопрос
Вероятно, это проблема дизайна базы данных, но я не нашел лучшего решения.Среди нескольких других у меня есть эти модели:
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):
# ...