Django - создать модель, которая позволяет вставлять несколько значений для одного поля? - PullRequest
5 голосов
/ 23 февраля 2011

Хорошо, я пытаюсь сделать что-то, что должно быть очень простым, на мой взгляд, но мне, вероятно, не хватает некоторых знаний администратора SQL или django, чтобы добраться до этого. Скажем, у меня есть простая модель, такая как

class Book(models.Model):
    title = models.CharField(max_length = 50)
    review = models.TextField()

и я хочу, чтобы у поля 'review' на сайте администратора был небольшой знак плюс, чтобы добавить больше отзывов к тому же экземпляру модели, чтобы шаблон мог их перебирать.

Я знаю, что мог бы создать поле m2m для обзоров, и это дало бы мне именно это, но я бы предпочел, чтобы эти дополнительные обзоры могли быть заполнены с той же страницы без всплывающих окон (для моих беспомощных пользователей я хотел бы сохранить как можно более WSIWYG, так как эти текстовые поля будут работать на крошечном MCE), и мне интересно, действительно ли необходимо создавать дополнительную модель только для текстового поля

1 Ответ

11 голосов
/ 23 февраля 2011

Создайте модель Review, которая содержит текст отзыва и имеет значения от ForeignKey до Book ...

class Book(models.Model):
   title = models.CharField()

class Review(models.Model):
   book = models.ForeignKey(Book, related_name='reviews')
   review = models.TextField()

..., а затем зарегистрируйте соответствующий тип InlineModelAdmin для редактирования.все связанные обзоры на странице книги в админке.Я бы предложил использовать StackedInline в этом случае:

class ReviewInline(admin.StackedInline):
    model = Review

class BookAdmin(admin.ModelAdmin):
    inlines = [
        ReviewInline,
    ]

В документации приведен пример почти этого точного сценария, за исключением нескольких авторов вместо нескольких обзоров:

...