Django ORM: кэширование и управление объектами ForeignKey

просто поместите функцию в скрипт и вызовите ее, нажав кнопку onclick="showTR()" в <button>

<button id="click" style="float: left" onclick="showTR()">Click</button>

<table>
    <tr class="red" id="newpull">
        <td>1</td>
        <td>2</td>
        <td>3</td>
        <td>4</td>
        <td>5</td>
    </tr>
</table>

это ваш скрипт


function showTR(){
   document.getElementById("newpull").style.visibility = "visible";
}
window.onload = function () {
   document.getElementById("newpull").style.visibility = "hidden";
};
< blockquote>

ИЛИ вы также можете использовать это

function showTR(){
var status = document.getElementById("newpull").style.visibility ;
  if (status == 'visible') {
     document.getElementById("newpull").style.visibility = "hidden";
  } else {
     document.getElementById("newpull").style.visibility = "visible";
  }
}
window.onload = function () {
   document.getElementById("newpull").style.visibility = "hidden";
};
7
задан Bobby Moretti 25 March 2009 в 05:24
поделиться

2 ответа

ORM Django не реализует карту идентификационных данных (это находится в средстве отслеживания билета, но не ясно, если или когда это будет реализовано; по крайней мере одно ядро разработчик Django выразило возражение ему). Это означает, что, если Вы прибываете в тот же объект базы данных через два различных пути запроса, Вы работаете с различными объектами Python в памяти.

Это означает, что Ваш дизайн (загружают все в память сразу, изменяют много вещей, затем сохраняют все это назад в конце) является неосуществимым использованием Django ORM. Сначала, потому что это будет часто тратить впустую большую память, загружающуюся в дубликатах того же объекта, и второй из-за "перезаписи" проблем как та, Вы сталкиваетесь.

Любой необходимо переделать дизайн для предотвращения этих проблем (любой стараться для работы только с одним QuerySet за один раз, сохраняя что-либо измененное перед созданием другого запроса; или если Вы загружаете несколько запросов, ищете все отношения вручную, никогда не пересекайте ForeignKeys с помощью удобных атрибутов для них), или используйте альтернативный Python ORM, который реализует карту идентификационных данных. SQLAlchemy является одной опцией.

Обратите внимание, что это не означает, что ORM Django "плох". Это оптимизировано для случая веб-приложений, где эти виды проблем редки (я делал веб-разработку с Django в течение многих лет и никогда не имел эту проблему на реальном проекте). Если Ваш вариант использования отличается, можно хотеть выбрать другой ORM.

20
ответ дан 6 December 2019 в 08:45
поделиться
1
ответ дан 6 December 2019 в 08:45
поделиться
Другие вопросы по тегам:

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