В C ++ директива include скопирует и вставит файл заголовка в ваш исходный код на этапе предварительной обработки. Следует отметить, что заголовочный файл обычно содержит функции и классы, объявленные в пространстве имен. Например, заголовок <vector>
может выглядеть примерно так:
namespace std {
template <class T, class Allocator = allocator<T> > class vector;
...
}
Предположим, вам нужно определить вектор в вашей основной функции, вы делаете #include <vector>
и у вас есть фрагмент кода выше в вашем коде сейчас:
namespace std {
template <class T, class Allocator = allocator<T> > class vector;
...
}
int main(){
/*you want to use vector here*/
}
Обратите внимание, что в вашем коде векторный класс все еще находится в пространстве имен std
. Однако ваша основная функция находится в пространстве имен по умолчанию global
, поэтому простое включение заголовка не сделает векторный класс видимым в пространстве имен global
. Вы должны либо использовать using
, либо сделать префикс, например, std::vector
.
Спасибо, Карл, вы привели меня к обнаружению корня моей проблемы.
При создании формы с обязательным полем выбора мы должны установить начальное значение , иначе форма будет учитывать это поле изменено .
Итак, для такой формы:
class SomeForm(forms.Form):
A = 0
B = 1
C = 2
D = 3
choices = ((A, 'Aah'), (B, 'Baa'), (C, 'Caa'), (D, 'Daa'))
# This is a required choice field
pickme = forms.ChoiceField(choices=choices)
мы делаем это:
pickme = forms.ChoiceField(choices=choices, initial=A)
Затем, когда набор форм проверяет дополнительную форму, он увидит, что pickme имеет начальное значение A, и теперь это A также и будет считать его неизменным.
Это необычное поведение наборов форм. Наборы форм передают empty_permitted = True для всех «дополнительных» форм , а форма с empty_permitted, которая не была изменена, всегда должна проходить проверку . Обратите внимание, что это прекрасно работает в администраторе Django (если вы используете встроенные строки).
Вы должны делать что-то еще в своем коде, что где-то нарушает это поведение. Разместите полный код соответствующей формы?