модель Form django. Включайте поля из связанных моделей

Эффективный способ вычислить эту область состоит в том, чтобы использовать алгоритм развертки. Давайте предположим, что мы развертываем вертикальную строку L (x) через объединение прямоугольников U:

  • , в первую очередь, необходимо создать очередь событий Q, который является, в этом случае, заказанным списком всех x-координат (левых и правых) из прямоугольников.
  • во время развертки, необходимо поддержать 1D datastructure, который должен дать Вам общую длину пересечения L (x) и U. Важная вещь состоит в том, что эта длина является постоянной между двумя последовательными событиями q и q' Q. Так, если l (q) обозначает общую длину L (q +) (т.е. L только на rightside q) пересеченный с U, область, развернутая L между событиями q и q', точно l (q) * (q' - q).
  • просто необходимо подвести итог всех этих развернутых областей для получения общей.

Мы все еще должны решить 1D проблема. Вы хотите 1D структура, которая вычисляет динамично объединение (вертикальных) сегментов. Динамично, я подразумеваю, что Вы иногда добавляете новый сегмент, и иногда удаляете тот.

я уже детализировал в своем ответе на этот выходящий из строя вопрос о диапазонах , как сделать это статическим способом (который является на самом деле 1D развертка). Таким образом, если Вы хотите что-то простое, можно непосредственно применить это (путем перевычисления объединения для каждого события). Если Вы хотите что-то более эффективное, просто необходимо адаптировать его немного:

  • предположение, что Вы знаете объединение сегментов S 1 ... Sn состоит из, разделяет сегменты D 1 ... D k. Добавление Sn+1 очень легко, просто необходимо определить местоположение обоих концов Sn+1 amongs концы D1... D k.
  • предположение, что Вы знаете объединение сегментов S 1 ... Sn состоит из, разделяет сегменты D 1 ... D k, удаляя сегмент S я (предполагающий, что S я был включен в Dj) означаю повторно вычислять объединение сегментов, что Dj состоял из, кроме S я (использование статического алгоритма).

Это - Ваш динамический алгоритм. Предположение, что Вы будете использовать отсортированные наборы с разовыми журналом запросами местоположения для представления D1... D k, это - вероятно, самый эффективный неспециальный метод, который можно получить.

23
задан John Moutafis 26 January 2018 в 08:29
поделиться

1 ответ

Оба ответа верны: встроенные наборы форм позволяют сделать это легко.

Имейте в виду, однако, что встроенные формы могут идти только в одном направлении: из модели, в которой есть внешний ключ. Без первичных ключей в обоих (плохо, поскольку тогда у вас может быть A -> B, а затем B -> A2), у вас не может быть встроенного набора форм в модели related_to.

Например, если у вас есть класс UserProfile, и хотите, чтобы они, когда они отображаются, отображали связанный объект User, как в строке,

7
ответ дан 29 November 2019 в 02:51
поделиться
Другие вопросы по тегам:

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