Сегодня у меня была такая же ошибка (отсутствует точно такой же пакет). Я также создал проект MVC + Web API.
Это произошло потому, что я переместил файлы приложений (включая файл .csproj) в другое место. Я вручную обновил файл .sln, но теперь все зависимости пакетов (Visual Studio 2015) хранятся в файле .csproj.
Редактирование файла .csproj и исправление относительного пути к папке решения (которая содержит папку пакетов) решила проблему для меня.
Необходимо будет добавить __init__
метод к Action_Form
для устанавливания начальных значений, не забывая звонить __init__
на основе ModelForm
класс через [1 113] супер .
class Action_Form(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(Action_Form, self).__init__(*args, **kwargs)
self.fields['from_company'].queryset = Contact.object.filter(...
, Если Вы планируете передать свои параметрические усилители фильтра как ключевое слово args к Action_Form
, необходимо будет удалить их предшествующий вызов супер:
myfilter = kwargs['myfilter']
del kwargs['myfilter']
или, вероятно, лучше:
myfilter = kwargs.pop('myfilter')
Для получения дополнительной информации, вот другая ссылка, относящаяся к Динамический ModelForms в Django.
Если предыдущий ответ не был достаточно простым, я попытаюсь ответить 1) еще раз:
- Как я могу заставить ModelMultipleChoiceField принимать эти «начальные» значения?
Вы можете оставить Action_Form
, как это было в исходном вопросе, и просто использовать это, чтобы сделать именно то, что вы хотите:
>>> form4 = Action_Form(initial={'from_company': Contact.objects.all().values_list('id',flat=True)})
>>> print form4['from_company']
Отвечаю на 1)
1. Как я могу заставить ModelMultipleChoiceField принимать эти «начальные» значения?
Это можно сделать в вашем методе Action_Form
__ init __
с использованием атрибута ModelMultipleChoiceField initial
.
Как сказано в нем. в исходном коде Django ( db / models / fields / related.py )
в def formfield (self, ** kwargs)
:
# If initial is passed in, it's a list of related objects, but the
# MultipleChoiceField takes a list of IDs.
Итак, вам нужно указать ему список идентификаторов:
class Action_Form(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(Action_Form, self).__init__(*args, **kwargs)
self.fields['from_company'].initial = [c.pk for c in Contact.object.filter()]