Поля ForeignKey в формах добавления / изменения - администратор Django - PullRequest
0 голосов
/ 29 августа 2018

Скажем, у меня есть эти модели в качестве простого примера:

class Event(models.Model):
    name = models.CharField(max_length=50, default='')
    app = models.ForeignKey(App)

class App(models.Model):
    name = models.CharField(max_length=50, default='')
    app_config = models.ForeignKey(AppConfig)

class AppConfig(models.Model):
    type = models.CharField(max_length=50, default='')
    is_valid = models.BooleanField(default=True)

Я хочу создать страницу администратора с формами добавления / изменения для Event, что позволит мне выбрать App и создать AppConfig со всеми его полями.

По сути, чтобы иметь форму с раскрывающимся списком, чтобы выбрать App, а под ним форму для заполнения полей AppConfig. Или даже просто знак «+» или ссылка, которая откроет форму для создания AppConfig.

Я видел много примеров того, как добавить это к list_display (например, this ), но не смог сделать то же самое с fields или fieldsets, чтобы получить его в форме добавления / изменения.

Любые предложения будут оценены. Спасибо!

Примечание: Я знаю, что это может быть легко решено, если бы у меня также был AppConfig в качестве внешнего ключа в Event, но это на самом деле не имеет смысла.

Редактировать: Мои версии Django и Python:
Python: 2.7.x
Джанго: 1.7.4

Edit2: Я нашел этот красивый код с открытым исходным кодом django_reverse_admin , который может быть полезен, но, во-первых, этот конкретный пакет поддерживает только Django 2.0+. Я пытался использовать оригинальный код, который, кажется, поддерживает предыдущие версии Django, но мне не удалось применить его к моему конкретному случаю.
Если у кого-то есть идея или она может показать мне, как использовать это в моем конкретном случае, это будет здорово. Спасибо!

1 Ответ

0 голосов
/ 29 августа 2018

Этот пакет позволяет быстро фильтровать или группировать «цепочечные» модели, добавляя в свои модели настраиваемый внешний ключ или поле «многие ко многим». Это позволит использовать AJAX-запрос для загрузки только соответствующих связанных объектов.

https://github.com/digi604/django-smart-selects

Я думаю, решение уже обсуждалось здесь Как отфильтровать выпадающий список в админке Django, когда сделан выбор в другом выпадающем списке

...