Я должен показать все статьи из закона.Кроме того, каждая статья может иметь описание или нет.Я должен показать все статьи и ваше описание, но я не знаю, как объединить описания и статью, когда highlight
description
не равно нулю.
my view
:
def details(request, pk):
law = get_object_or_404(Law, pk=pk)
articles = Article.objects.filter(law=pk)
articles = (
Article
.objects
.filter(law=pk)
.annotate(
is_marked=Exists(
Highlight
.objects
.filter(
article_id=OuterRef('id'),
user=request.user
)
)
)
)
context = {
'articles': articles,
}
template_name = 'leis/details.html'
return render(request, template_name, context)
Мой detail.html
:
<div class="article-post">
{% for article in articles %}
{{article}}
{% endfor %}
</div>
Это мой model
:
class Law(models.Model):
name = models.CharField('Name', max_length=100)
description = models.TextField('Description', blank = True, null=True)
class Article(models.Model):
article = models.TextField('Artigo/Inciso')
number = models.IntegerField('Number', blank=True, null=True)
law = models.ForeignKey(Law, on_delete=models.CASCADE, verbose_name='Law', related_name='articles')
Этот класс сохраняется с описанием, сделанным конкретным пользователем в конкретной статье в определенном законе:
class Highlight(models.Model):
law = models.ForeignKey(Law, on_delete=models.CASCADE, verbose_name='Law', related_name='highlightArticles')
article = models.ForeignKey(Law, on_delete=models.CASCADE, verbose_name='Article', related_name='highlightLaw')
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, verbose_name='highlightUsers', related_name='highlightUsers')
is_marked = models.BooleanField('Is it marked?', blank=True, default=False)
description = models.TextField('Description', blank = True, null=True)
Как мне объединить таблицы, чтобы показать все статьи с вашим конкретным описанием, сделанным конкретным пользователем?