Поле формы внешнего ключа в django admin - PullRequest
1 голос
/ 25 ноября 2011

Я хочу настроить свое приложение на основе администратора django, чтобы оно было более удобным для пользователя.

Добавить страницу предложения

Следующая страница администратора хороша, когда пользователь создаетПредложение клиенту, который уже зарегистрирован в системе.Но если клиент новый, то пользователь должен нажать + и отправить форму «Добавить нового клиента» во всплывающем окне.Это так сбивает с толку.

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

Вот мой admin.py.

class OptionOffer(admin.ModelAdmin):
   fieldsets = (('', {'fields': (('client'), 'startDate', 'regNumber')}),)

class OptionClient(admin.ModelAdmin):
   fieldsets = (('', {'fields': ('code')}),)

и model.py

class Client(models.Model):
    code = models.CharField(verbose_name=_("Code"), max_length=11)

class Offer(models.Model):
    client = models.ForeignKey(Client, verbose_name = _("Client"))
    startDate = models.DateTimeField(verbose_name = _("Start date"))
    regNumber = models.CharField(verbose_name=_("Registration number"), max_length=6)

Ответы [ 2 ]

1 голос
/ 27 ноября 2011

Вы можете использовать некоторые Javascript Framework, такие как jQuery, и загружать всплывающее окно на странице редактирования, используя iframe или что-то подобное. Или используйте всплывающее окно в стиле лайтбокса вместо стандартного Django.

0 голосов
/ 25 ноября 2011

Вы не получите лучшего решения без серьезного взлома администратора django. Вы можете встретить (или указать) InlineModelFormsets , которые предоставляют форму внизу текущей формы, позволяющую добавлять клиентов встроенными. Хотя это может показаться тем, что вам нужно, вы скоро увидите, что оно не соответствует вашему сценарию использования, так как требует отношения внешнего ключа от Клиента к Оферте, а не того, что у вас есть - отношения ForeignKey от Предложение клиенту

...