Доступ к атрибуту родительской модели в шаблоне Django
У меня есть приложение, которое имеет список проектов, и каждый проект имеет количество постов, и когда вы нажимаете на проект, он показывает все посты в этом проекте, но я не могу понять, как сделать так, чтобы он показывал, на каком проекте пользователь находится в данный момент, пример не работает Он должен сказать "Посты для проекта 1", например. Вот соответствующий код того, что у меня есть на данный момент.
<h1 class="mb-3">Posts for {{ post.project.title }}</h1>
{% for post in posts %}
<article class="media content-section">
<img class="rounded-circle article-img" src="{{ post.author.profile.image.url }}">
<div class="media-body">
<div class="article-metadata">
<a class="mr-2">{{ post.author }}</a>
<small class="text-muted">{{ post.date_posted|date:"F d, Y" }}</small>
</div>
<h2><a class="article-title">{{ post.title }}</a></h2>
<p class="article-content">{{ post.description }}</p>
</div>
</article>
{% endfor %}
class Project(models.Model):
title = models.CharField(max_length=100)
description = models.TextField(default='')
date_posted = models.DateTimeField(default=timezone.now)
author = models.ForeignKey(User, on_delete=models.CASCADE)
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('project-detail', kwargs = {'pk': self.pk})
class Post(models.Model):
def get_default_action_status():
return Project.objects.get(title="bruh")
project = models.ForeignKey(Project, on_delete=models.CASCADE, related_name='posts', default=get_sentinel_exam_id)
title = models.CharField(max_length=100)
description = models.TextField(default='')
date_posted = models.DateTimeField(default=timezone.now)
author = models.ForeignKey(User, on_delete=models.CASCADE)
LOW = '!'
MED = '!!'
HIGH = '!!!'
YEAR_IN_SCHOOL_CHOICES = [
(LOW, '!'),
(MED, '!!'),
(HIGH, '!!!'),
]
severity = models.CharField(
max_length=3,
choices=YEAR_IN_SCHOOL_CHOICES,
default=LOW,
)
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('post-detail', kwargs = {'pk': self.pk})
urlpatterns = [
path('', ProjectListView.as_view(), name='blog-home'),
path('user/<str:username>', UserProjectListView.as_view(), name='user-projects'),
path('project/<str:title>', ProjectPostListView.as_view(), name='project-posts'),
path('post/<int:pk>/', ProjectDetailView.as_view(), name='project-detail'),
path('post/new/', ProjectCreateView.as_view(), name='project-create'),
path('post/<int:pk>/update/', ProjectUpdateView.as_view(), name='project-update'),
path('post/<int:pk>/delete/', ProjectDeleteView.as_view(), name='project-delete'),
path('about/', views.about, name='blog-about'),
]
class ProjectPostListView(ListView):
model = Post
template_name = 'blog/project_posts.html'
context_object_name = 'posts'
paginate_by = 10
def get_queryset(self):
project = get_object_or_404(Project, title=self.kwargs.get('title'))
return Post.objects.filter(project=project).order_by('-date_posted')
Прошу прощения, если часть этого кода была не нужна, я новичок в Django.
Я понял это, создав модель "ProjectPostListView" в Project, а затем изменив ее на DetailView, чтобы я мог просто использовать все объекты post, связанные с этим проектом.