[英]Accessing a parent model attribute within Django template
I have an app that has a list of projects, and each project has a number of posts, and when you click on a project, it shows all of the posts in that project, but I can't figure out how to make it display what project the user is currently on, sample of it not working It should say "Posts for project 1" for example.我有一个包含项目列表的应用程序,每个项目都有许多帖子,当您单击一个项目时,它会显示该项目中的所有帖子,但我不知道如何让它显示用户当前在哪个项目上,它的示例不工作例如应该说“项目 1 的帖子”。 Here is the relevant code of what I have so far.
这是我到目前为止所拥有的相关代码。
<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')
Apologies if some of that code wasn't needed, I am new to Django.抱歉,如果不需要其中的某些代码,我是 Django 的新手。
I figured it out by making the model of "ProjectPostListView" into a Project, and then changing that to a DetailView so I could just use all of the post objects associated with that project.我通过将“ProjectPostListView”的 model 变成一个项目,然后将其更改为 DetailView 来解决这个问题,这样我就可以使用与该项目关联的所有帖子对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.