Django: Как я делаю поля недоступными для редактирования по умолчанию во встроенной модели formset?

Он может использовать индекс (id, name, city) для удовлетворения предиката «City =?», Но очень и очень неэффективно.

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

Индекс (city, name, id) будет лучшим индексом для вашего запроса. Он легко найдет все нужные записи о городе и не будет нуждаться в доступе к базовой таблице для получения значений идентификатора и имени.

5
задан Jeff 14 October 2009 в 18:13
поделиться

3 ответа

Я думаю, вы могли бы переопределить функцию инициализации вашей формы, которая используется в наборе форм. Там вы можете проверить initial_data и динамически создавать формы, как вы надеетесь. По крайней мере, в моей голове это звучит правдоподобно.

0
ответ дан 18 December 2019 в 07:10
поделиться

Это потому, что 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 для переключения виджетов?

0
ответ дан 18 December 2019 в 07:10
поделиться

Этот тоже немного поставил меня в тупик. Надеюсь, это то, что вы ищете.

<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>
16
ответ дан 18 December 2019 в 07:10
поделиться
Другие вопросы по тегам:

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