如何使用 get_context_data 获取 id?
How to get the id using a get_context_data?
我想获得模型中使用的模型的关注者总数:
class Project(models.Model):
owner = models.ForeignKey(User, related_name='project_created_by', on_delete=models.CASCADE)
name = models.CharField(max_length=100)
description = models.TextField(max_length=150, blank=True, null=True)
followers = models.ManyToManyField(settings.AUTH_USER_MODEL, related_name='followers', blank=True)
created = models.DateTimeField(auto_now_add=True)
last_modefied = models.DateTimeField(auto_now=True)
def __str__(self):
return self.name
这是class
class ProjectListView(ListView):
template_name = 'projectmanagement/project.html'
context_object_name = 'projects'
def get_queryset(self):
queryset = Project.objects.filter(owner=self.request.user).order_by("name")
return queryset
def get_context_data(self, *args, **kwargs):
context = super(ProjectListView, self).get_context_data(*args, **kwargs)
project = Project.objects.get(pk=12) <-- HERE -->
context['followers'] = project.followers.filter(followers=project).count()
return context
您可以 .annotate(..)
[Django-doc] 您的 Product
的查询集,关注者数量:
from django.db.models import <b>Count</b>
class ProjectListView(ListView):
model = Project
template_name = 'projectmanagement/project.html'
context_object_name = 'projects'
def get_queryset(self):
return super().get_queryset().annotate(
<b>nfollowers=Count('followers')</b>
).filter(
owner=self.request.user
).order_by('name')
现在,上下文数据中的所有项目都会有一个额外的属性 nfollowers
,其中包含关注者的数量。
因此,您可以使用以下方式渲染:
{% for project in projects %}
{{ project.name }}, followers: {{ <b>project.nfollowers</b> }}<br>
{% endfor %}
我想获得模型中使用的模型的关注者总数:
class Project(models.Model):
owner = models.ForeignKey(User, related_name='project_created_by', on_delete=models.CASCADE)
name = models.CharField(max_length=100)
description = models.TextField(max_length=150, blank=True, null=True)
followers = models.ManyToManyField(settings.AUTH_USER_MODEL, related_name='followers', blank=True)
created = models.DateTimeField(auto_now_add=True)
last_modefied = models.DateTimeField(auto_now=True)
def __str__(self):
return self.name
这是class
class ProjectListView(ListView):
template_name = 'projectmanagement/project.html'
context_object_name = 'projects'
def get_queryset(self):
queryset = Project.objects.filter(owner=self.request.user).order_by("name")
return queryset
def get_context_data(self, *args, **kwargs):
context = super(ProjectListView, self).get_context_data(*args, **kwargs)
project = Project.objects.get(pk=12) <-- HERE -->
context['followers'] = project.followers.filter(followers=project).count()
return context
您可以 .annotate(..)
[Django-doc] 您的 Product
的查询集,关注者数量:
from django.db.models import <b>Count</b>
class ProjectListView(ListView):
model = Project
template_name = 'projectmanagement/project.html'
context_object_name = 'projects'
def get_queryset(self):
return super().get_queryset().annotate(
<b>nfollowers=Count('followers')</b>
).filter(
owner=self.request.user
).order_by('name')
现在,上下文数据中的所有项目都会有一个额外的属性 nfollowers
,其中包含关注者的数量。
因此,您可以使用以下方式渲染:
{% for project in projects %}
{{ project.name }}, followers: {{ <b>project.nfollowers</b> }}<br>
{% endfor %}