Как добавить ссылку для быстрого добавления в связанную модель в Django Admin - PullRequest
0 голосов
/ 02 февраля 2012

Предположим, есть два класса:

class A(models.Model): 
    …

class B(models.Model): 
    a = models.ForeignKey(A) 
    …

Для удобства, чтобы добавить B без запоминания A, как я могу добавить ссылку для добавления B в форму изменения A?

Вот решение, упомянутое в этой ссылке , которое предлагает добавить некоторые коды в модель B. Но я не думаю, что подобные коды должны быть помещены в модель.

Обновление:

У встроенной проблемы есть проблема (или я делаю это неправильно): когда число встроенных объектов превышает атрибут max_num, новой пустой формы для добавления новых объектов не существует.Однако количество встроенных объектов может быть очень большим.

1 Ответ

3 голосов
/ 02 февраля 2012

Модель A имеет обратный внешний ключ к B, потому что B имеет внешний ключ к A:

  • B (). A является внешним ключом
  • A (). Bet_set является обратным внешним ключом

Django предлагает " inline " для работы с обратными внешними ключами .

  1. В контексте форм в пользовательских представлениях / ваш код , используйте наборов встроенных моделей .

  2. В контексте Администратор Django , используйте InlineModelAdmin подобно StackedInline или TabularInline

Если вы не хотите, чтобы встроенный набор форм формировался из существующих объектов, переопределите метод queryset () вашего класса встроенных форм администрирования , чтобы получить что-то вроде: YourModel.objects.none ()

Это сделает встроенный набор форм всегда пустым. Если вам нужна только одна дополнительная форма, установите extra = 1.

...