Создание переходного процесса (небаза данных) приписывает в модели Django, доступной шаблону

Awk может согласовать вывод для предоставления, что попросил корреспондент. На моем Солярисе 10 систем найдите, что-ls печатает размер в КБ как второе поле, таким образом:

% find . -name '*.ear' -ls | awk '{print $2, $11}'
5400 ./dir1/dir2/earFile2.ear
5400 ./dir1/dir2/earFile3.ear
5400 ./dir1/dir2/earFile1.ear

Иначе, используйте - должностное лицо ls - люфтганза и выберите поле размера от вывода. Снова на Солярисе 10:

% find . -name '*.ear' -exec ls -lh {} \; | awk '{print $5, $9}'
5.3M ./dir1/dir2/earFile2.ear
5.3M ./dir1/dir2/earFile3.ear
5.3M ./dir1/dir2/earFile1.ear
10
задан Mike Bannister 13 November 2009 в 15:15
поделиться

2 ответа

Причина, по которой вы не видите эти значения в своем шаблоне, заключается в том, что каждый раз, когда вы вызываете car.meter_set.all () , вы получаете совершенно новый набор запросов прямо из базы данных.

Экземпляры модели Django не имеют идентичности, поэтому, хотя объекты Meter в одном наборе запросов имеют те же значения базы данных, что и в другом, они не имеют общих динамических атрибутов.

​​Один из способов сделать это - кэшировать объекты Meter в каждом автомобиле, как я показываю здесь в недавнем вопросе. Затем вместо ссылки на car.meter_set.all () в представлении, модели и шаблоне вы должны сделать car.get_meters () или что-то еще, и вы получите тот же набор объектов каждый раз вместе с вашими динамическими атрибутами.

11
ответ дан 4 December 2019 в 00:25
поделиться

Я пробовал нечто подобное в своем собственном коде, и похоже, что проблема, с которой вы столкнулись, возникает в методе read_meter () и odomoter () вид.

Объекты meter и car , которые вы используете для итерации по QuerySets, выпадают из области видимости, и изменения, которые вы вносите в их атрибуты идут с ними.

Когда вы показываете метр. разница и meter.changed в шаблоне, Django воссоздает эти объекты из базы данных (и без несохраненных значений атрибутов).

Надеюсь, что объяснение понятно. Есть ли причина не сохранять значения в БД?

1
ответ дан 4 December 2019 в 00:25
поделиться