Необходимо будет добавить __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.
Предполагая, что вы используете последнюю версию waf (1.5.9 на момент написания), подстановочные знаки можно указать с помощью метода glob ()
в сборке контекст. Таким образом, вы можете написать следующее:
bld.new_task_gen(
features = 'cc cshlib',
source = bld.glob('*.c'),
target='mylib')
Если вы использовали старую версию waf, в которой нет glob, тогда вы можете использовать метод find_sources_in_dirs
:
lib = bld.new_task_gen(
features = 'cc cshlib',
target = 'mylib')
lib.find_sources_in_dirs('.')
Этот метод все еще в Waf, но объявлена устаревшей и может в конечном итоге исчезнуть.
Переменные srcdir
и blddir
теперь необязательны, поэтому они вам не нужны - они по умолчанию равны "." и все равно «строить». Вы не должны добавлять «lib» к имени цели, это делается автоматически в зависимости от платформы (в Windows библиотека не добавляется, а общие библиотеки используют .dll). Сборка отладки и выпуска - удивительно сложная проблема. Первоначально Waf включал эту функцию, но в какой-то момент она была удалена и больше никогда не добавлялась. Это обычный запрос в списке рассылки, поэтому он может появиться снова в будущем. Между тем вы можете сделать намного хуже, чем использовать модуль cflags gjc . Просто добавьте его в каталог своего проекта. Окончательный сценарий wscript будет выглядеть следующим образом:
VERSION='0.0.1'
APPNAME='mylib'
def set_options(opt):
opt.tool_options('compiler_cc')
opt.tool_options('cflags', tooldir='.')
def configure(conf):
conf.check_tool('compiler_cc')
conf.check_tool('cflags', tooldir='.')
def build(bld):
bld.new_task_gen(
features = 'cc cshlib',
source = bld.glob('*.c'),
target=APPNAME)
А чтобы настроить отладочную сборку, вы должны запустить следующее:
./waf configure -d debug
Если вы используете библиотеки в их собственных подкаталогах, тогда вам, вероятно, следует иметь wscript верхнего уровня и использовать bld.add_subdirs ()
метод добавления каталогов библиотек / программ. У каждого подкаталога будет свой собственный файл wscript_build.