У меня есть несколько связанных models
, и на одной странице мне нужно получить доступ к данным из разных models
при различных условиях. Доступ к большей части этих данных осуществляется без form
, поскольку пользователю необходимо управлять только несколькими полями.
Чтобы дать вам представление о том, насколько взаимосвязаны мои модели:
class User(models.Model):
first = models.ManyToManyField(First)
second= models.ManyToManyField(Second)
class First(models.Model):
[...]
class Second(models.Model):
first = models.ManyToManyField(First)
class Third(models.Model):
first = models.ForeignKey(First)
class Fourth(models.Model):
user = models.ForeignKey(User)
second = models.ForeignKey(Second)
third = models.ForeignKey(Third)
class Fifth(models.Model):
fourth = models.ForeignKey(Fourth)
class Sixth(models.Model):
fifth = models.ForeignKey(Fifth)
У меня большие трудности с передачей этих данных на мой template
и их эффективным отображением. Изначально я показывал это пользователю ужасным образом, так как просто хотел проверить, доступны ли мои данные / отображаются ли они правильно. Это пример хитроумного кода, который я использовал для проверки правильности передачи моих данных:
{% for second in user.second.all %}
{% for first in second.first.all %}
[...]
{% for fourth in user.fourth.all %}
[...]
{% if fourth.first_id == first.id and fourth.second_id == second.id %}
{% if fourth.checked == True %}
[...]
{% else %}
[...]
{% endif %}
{% endif %}
{% endfor %}
{% endfor %}
{% endfor %}
[...]
Разве это не мерзость, и он идет глубже. Сейчас пытаюсь это переформатировать. Я знаю, что моя обработка должна выполняться в рамках моего представления, а не моего шаблона. Дело в том, что я не могу просто отфильтровать много данных в моем views
, так как мне нужно много данных в template
в разное время (например, у меня может быть 20 фрагментов данных в model
и Мне нужно получить доступ ко всем 20, но некоторые, когда совпадают id
, некоторые, когда id
и type
совпадают et c. Это много сторонних logi шаблона c - я думаю, что это плохо).
Это то, что я пытался сделать до сих пор, но мне не повезло:
second = Second.objects.filter(user__id=user.id) .select_related('First')
Любая помощь в том, как присоединить / передать все эти model
на мой view
и получить доступ к данным без вложенных вложенных циклов, или даже просто указатели на то, как подойти к этому, будут оценены. Я также не уверен, стоит ли мне стремиться присоединиться к как можно большему количеству model
s, а затем перейти к моему view
или передать несколько отдельных models
.
Спасибо.