如何解决来自不同应用程序模型的Django tabularinline
我是Django的新手。我的问题是如何通过两个不同的应用程序在django中的DetailView中将数据显示为Tabularinline
。
我在用户应用程序中有团队模型,在项目应用程序中有项目和客户端。 我想在团队delailview中显示属于特定团队的所有项目。
我的问题是,当涉及两个或多个应用程序时,如何以模板形式显示结果。结果显示在django管理员中,但是我无法在我编写的html代码中显示它们,这是代码:
第一个应用:CustomeUser
class CustomUser(AbstractUser):
bio= models.CharField(max_length=300,null= True,blank=True)
memberOf = models.ManyToManyField("Team",blank=True)
class Team (models.Model):
title = models.CharField(max_length=200)
user= models.ManyToManyField(get_user_model())
date_created= models.DateTimeField(auto_now_add=True,blank=True,null=True)
date_updated= models.DateTimeField(auto_now=True,null=True )
def __str__(self):
return self.title
def get_absolute_url(self): # new
return reverse('team_detail',args=[str(self.pk)])
- 第二个应用项目
class Client(models.Model):
team = models.ForeignKey(Team,on_delete=models.CASCADE,null=True,related_name="client_team")
title = models.CharField(max_length=150,blank=True)
date_created = models.DateTimeField(auto_now_add=True,null=True)
date_updated = models.DateTimeField(auto_now=True,null=True)
def __str__(self):
return self.title
class Project (models.Model):
team= models.ForeignKey(Team,on_delete=models.CASCADE )
client=models.ForeignKey(Client,null=True)
title = models.CharField(max_length=150,null=False,blank=False)
notes = models.TextField( null=True,null=True)
purchase_number= models.CharField(max_length=50,blank=True)
PO_date = models.DateTimeField( blank=True,null=True)
completion_date = models.DateTimeField( blank=True,null=True)
我修改了app1。 admin.py
以显示Tabularinline
表单。
from projects.models import Project,Client
class ProjectInline(admin.TabularInline):
model = Project
fields = ['title','client','purchase_number']
class TeamAdmin(admin.ModelAdmin):
inlines = [
ProjectInline,]
admin.site.register(Team,TeamAdmin)
应用1:TeamDetailView:
class TeamDetailView(LoginRequiredMixin,DetailView):
model= Team
context_object_name = 'team'
template_name = 'team/team_detail.html'
应用2:Projectlistview:
class ProjectPageView(LoginRequiredMixin,ListView):
model = Project
def get_queryset(self):
queryset = super(ProjectPageView,self).get_queryset()
currentUser= self.request.user
team_list= currentUser.memberOf.values_list('id',flat=True)
queryset = queryset.filter(team_id__in=team_list)
return queryset
context_object_name = 'projects_list'
template_name = 'projects/projects_list.html'
该代码在Admin后台工作,但我无法在HTML表格中显示结果:
Team / team_detail.html:
{% extends '_base.html' %}
{% block content %}
<div class="team-detail">
<h2><a href="">{{ team.title }}</a></h2>
<p>Team tile : {{ team.title }}</p>
{% for user in team.user.all %}
<p>user: {{ user }}</p>
{% endfor %}
</div>
<hr>
<div >
<table class="table">
<thead>
<tr>
<th scope="col">#</th>
<th scope="col">Tile</th>
<th scope="col">client</th>
<th scope="col">Purchase Order</th>
</tr>
</thead>
<tbody>
{% for project in project_list %}
<tr>
<th scope="row"> x </th>
<td>{{project.tilte}}</td>
<td>{{project.client}}</td>
<td>{{project.tilte}}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% endblock content %}
非常感谢您的帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。