Django фильтр собственных ссылок для версии - PullRequest
0 голосов
/ 01 апреля 2020

Я создал другую версию модели шаблона, используя поле собственной ссылки с одним родительским шаблоном, когда пользователь обновляет любой шаблон, я создаю новую версию предыдущего шаблона.
Модель

class AppTemplate(models.Model):
    app = models.ForeignKey( Application, on_delete=models.CASCADE, related_name="apps" )
    name = models.CharField(max_length=100, null=False)
    description = models.TextField(blank=True)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
    version_ref = models.ForeignKey('self', null=True, blank=True, on_delete=models.SET_NULL)
    version = models.FloatField(default=1.0)

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

templates = AppTemplate.objects.filter(app=app_id, version_ref__isnull=True)
queryset = []
for template in templates:
   child_template = AppTemplate.objects.filter(version_ref=template).order_by('-created_at')
   if len(child_template) > 0:
       queryset.append(child_template.first())
   else:
       queryset.append(template)

Как я могу улучшить свой фильтр набора запросов?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...