Он может использовать индекс (id, name, city) для удовлетворения предиката «City =?», Но очень и очень неэффективно.
Чтобы использовать индекс для удовлетворения этого запроса, ему нужно пройтись по большей части древовидной структуры в поисках записей с нужным городом. Вероятно, это все еще на порядок быстрее, чем сканирование таблицы!
Индекс (city, name, id) будет лучшим индексом для вашего запроса. Он легко найдет все нужные записи о городе и не будет нуждаться в доступе к базовой таблице для получения значений идентификатора и имени.
Я думаю, вы могли бы переопределить функцию инициализации вашей формы, которая используется в наборе форм. Там вы можете проверить initial_data и динамически создавать формы, как вы надеетесь. По крайней мере, в моей голове это звучит правдоподобно.
Это потому, что GDB действует так, как будто просматриваемая вами переменная находится вне области видимости, в то время как на самом деле он просто не понимает, что возвращает каждая функция или вызов метода модуля форматирования данных (модуль форматирования данных - это "{(unichar * ) Xcode_CFStringSummary ($ VAR, $ ID)}: s "часть, которую вы видите. Когда вы выполняете отладку и находитесь в методе, где вы знаете, что локальная переменная должна находиться в области видимости прямо сейчас, откройте окно отладчика и область, где вы можете увидеть заголовки столбцов «Переменная», «Значение» и «Сводка», дважды щелкните значок «Сводная» запись строки для интересующей вас переменной и введите следующее (для типов массивов, таких как NSArray или NSCFArray):
«{(int) [$ VAR count]} объекты {(NSString *) [(NSArray * ) $ VAR description]}: s "
, затем нажмите return. Теперь вы перезаписали средство форматирования данных по умолчанию, предоставляемое расширением GDB Xcode (которое можно найти в различных списках в "/ Developer / Library / Xcode / CustomDataViews /"), с вашей собственной строкой форматирования данных.
Ваши собственные переопределения сохраняются в "~ / Library / Application Support / Developer / Shared / Xcode / CustomDataViews / CustomDataViews. и если вы хотите вернуть стандартное средство форматирования данных Apple, просто дважды щелкните строку для переменной того же типа и удалите все, что там есть.
Мельчайшие детали: в пользовательском выражении выше конструкция "{}" сообщает GDB выполнить команду (как если бы вы выполняли ее из командной строки отладчика GDB, что означает, что применяются те же ограничения: вам необходимо указать тип возвращаемого значения в скобках перед каждой функцией или методом, который что-то возвращает). Знак «: s» за закрывающей фигурной скобкой указывает Xcode и GDB ссылаться на столбец «Сводка». Также допустимым будет ": v", который ссылается на столбец "Значение", который большую часть времени является просто значением указателя. Все, что находится за пределами фигурных скобок, отображается дословно. и если вы хотите вернуть стандартное средство форматирования данных Apple, просто дважды щелкните строку для переменной того же типа и удалите все, что там есть.
Мельчайшие детали: в пользовательском выражении выше конструкция "{}" сообщает GDB выполнить команду (как если бы вы выполняли ее из командной строки отладчика GDB, что означает, что применяются те же ограничения: вам необходимо указать тип возвращаемого значения в скобках перед каждой функцией или методом, который что-то возвращает). Знак «: s» за закрывающей фигурной скобкой указывает Xcode и GDB ссылаться на столбец «Сводка». Также допустимым будет ": v", который ссылается на столбец "Значение", который большую часть времени является просто значением указателя. Все, что находится за пределами фигурных скобок, отображается дословно.
Мельчайшие детали: в пользовательском выражении выше конструкция "{}" сообщает GDB выполнить команду (как если бы вы выполняли ее из командной строки отладчика GDB, что означает, что применяются те же ограничения: вам необходимо указать тип возвращаемого значения в скобках перед каждой функцией или методом, который что-то возвращает). Знак «: s» за закрывающей фигурной скобкой указывает Xcode и GDB ссылаться на столбец «Сводка». Также допустимым будет ": v", который ссылается на столбец "Значение", который большую часть времени является просто значением указателя. Все, что находится за пределами фигурных скобок, отображается дословно.
Мельчайшие детали: в пользовательском выражении выше конструкция "{}" сообщает GDB выполнить команду (как если бы вы выполняли ее из командной строки отладчика GDB, что означает, что применяются те же ограничения: вам необходимо указать тип возвращаемого значения в скобках перед каждой функцией или методом, который что-то возвращает). Знак «: s» за закрывающей фигурной скобкой указывает Xcode и GDB ссылаться на столбец «Сводка». Также допустимым будет ": v", который ссылается на столбец "Значение", который большую часть времени является просто значением указателя. Все, что находится за пределами фигурных скобок, отображается дословно. что означает, что применяются те же ограничения: вам нужно указать тип возвращаемого значения в скобках перед каждой функцией или методом, который что-то возвращает). Знак «: s» за закрывающей фигурной скобкой указывает Xcode и GDB ссылаться на столбец «Сводка». Также допустимым будет ": v", который ссылается на столбец "Значение", который большую часть времени является просто значением указателя. Все, что находится за пределами фигурных скобок, отображается дословно. что означает, что применяются те же ограничения: вам нужно указать тип возвращаемого значения в скобках перед каждой функцией или методом, который что-то возвращает). Знак «: s» за закрывающей фигурной скобкой указывает Xcode и GDB ссылаться на столбец «Сводка». Также допустимым будет ": v", который ссылается на столбец "Значение", который большую часть времени является просто значением указателя. Все, что находится за пределами фигурных скобок, отображается дословно. К сожалению, фигурные скобки не могут быть вложенными, что делает недействительными условные выражения тернарных операторов.
Таким образом, с указанным выше средством форматирования данных вы должны увидеть следующее для пустого массива NSArray:
«0 объектов (\ n)»
Если вы хотите чтобы написать свои собственные средства форматирования данных как расширения GDB (что эквивалентно указанию функции, подобной Xcode_CFStringSummary выше), вы можете это сделать. Взгляните на следующий заголовок: «/Developer/Applications/Xcode.app/Contents/PlugIns/GDBMIDebugging.xcplugin/Contents/Headers/DataFormatterPlugin.h"
он расскажет вам все, что вам нужно знать. Но бывает сложно сделать это правильно. Было бы проще и менее подверженным ошибкам просто определить другой метод в вашем классе и вызвать его из строки форматирования данных вместо «описания».
не чистый, и, вероятно, есть лучший способ справиться с этим.Как насчет того, чтобы просто отправить данные как редактируемые (обычный набор форм) из django и выполнить проверку значения с помощью javascript, используя javascript для переключения виджетов?
Этот тоже немного поставил меня в тупик. Надеюсь, это то, что вы ищете.
<TABLE>
<form method="post" action=".">
{{ formset.management_form }}
{% for form in formset.forms %}
{{ form.id }}
<tr>
<td>{{ form.FirstName }}</td> <!-- This is a normal, editable field -->
<td>{{ form.instance.LastName }}</td> <!-- 'instance' is your actual Django model. LastName displays the text from the last name field -->
</tr>
{% endfor %}
</form>
</TABLE>