3

Это, вероятно, проблема с дизайном db, но я не мог понять, что лучше. Среди нескольких других, у меня есть эти модели:Передовая декларация - нет страницы администратора в django?

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. Код не мог работать, потому что Band пришел после User в источнике. Поэтому я набрал class Band(models.Model): pass. К сожалению, это, похоже, не очень хорошая идея, потому что теперь Band - единственная модель, которая не отображает никаких элементов интерфейса в admin django (модель Bands есть, ее просто нельзя редактировать).

Вопрос в том, какие изменения следует внести в модели, чтобы обеспечить правильную работу? (Если таковые имеются)

ответ

12

См: http://docs.djangoproject.com/en/dev/ref/models/fields/#foreignkey, который говорит:

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

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

class Manufacturer(models.Model): 
     # ... 
+0

Awesome, спасибо. Django FTW! –