Как передать начальный параметр экземпляру ModelForm django?

Существует несколько причин использования "goto" оператора, о котором я знаю (некоторые уже говорили с этим):

Чисто выход из функции

Часто в функции, можно выделить ресурсы и потребность выйти в нескольких местах. Программисты могут упростить свой код путем помещения кода очистки ресурса в конце функции, и все "точки выхода" функции были бы goto маркировка очистки. Таким образом, Вы не должны писать код очистки в каждой "точке выхода" функции.

Выходящие вложенные циклы

, Если Вы находитесь во вложенном цикле и должны убежать весь циклы, goto может сделать этот намного более чистый и более простой, чем операторы завершения и если-проверки.

повышения производительности Низкого уровня

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

Примечание, что во всех этих примерах, gotos ограничиваются объемом единственной функции.

20
задан kender 8 November 2009 в 19:54
поделиться

2 ответа

Используйте следующий метод (надеюсь, он достаточно ясен):

class BackupForm(ModelForm):
    """Form for adding and editing backups."""

    def __init__(self, *args, **kwargs):
        systemid = kwargs.pop('systemid')
        super(BackupForm, self).__init__(*args, **kwargs)
        self.fields['units'] = forms.ModelMultipleChoiceField(
                required=False,
                queryset=Unit.objects.filter(system__id=systemid),
                widget=forms.SelectMultiple(attrs={'title': _("Add unit")}))

    class Meta:
        model = Backup
        exclude = ('system',)

Создайте такие формы:

form_backup = BackupForm(request.POST,
                         instance=Backup,
                         systemid=system.id)
form_backup = BackupForm(initial=form_backup_defaults,
                         systemid=system.id)

Надеюсь, это поможет! Дайте мне знать, если вам нужно, чтобы я объяснил более подробно.

31
ответ дан 30 November 2019 в 00:01
поделиться

В http://www.djangobook.com/en/2.0/chapter07/ в разделе Установка начальных значений описывается, как использовать начальный параметр конструктора Form . Вы также можете сделать дополнительные вещи в методе __ init __ вашей производной формы .

1
ответ дан 30 November 2019 в 00:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: