python - Django - 如何将过滤后的查询集传递给 Detailview
问题描述
我有客户端、服务器、用户模型。在 Client Detailview 我想显示属于该公司的服务器和用户。我该如何过滤?
模型.py
class Client(models.Model):
name = models.CharField(max_length=50)
def __str__(self):
return self.name
class Server(models.Model):
company = models.ForeignKey(Client, on_delete=models.CASCADE)
name = models.CharField(max_length=50)
def __str__(self):
return self.name
class User(models.Model):
company = models.ForeignKey(Client, verbose_name="Company", on_delete=models.CASCADE)
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
def __str__(self):
return self.first_name + ' ' + self.last_name
视图.py
class clientdetails(LoginRequiredMixin, DetailView):
template_name = 'myapp/clientdetails.html'
def get_queryset(self):
return Client.objects.all()
def get_context_data(self, **kwargs):
context = super(clientdetails, self).get_context_data(**kwargs)
context['servers'] = Server.objects.filter(** servers belonging to that client **)
context['users'] = User.objects.filter(** servers belonging to that client **)
return context
我如何实现这一目标?
解决方案
如果您希望这是一个通用用例,即从服务器检索的所有对象都需要用于特定客户端。你可以看看使用limit-choices-to
class ClientDetails(LoginRequiredMixin, DetailView):
template_name = 'myapp/clientdetails.html'
model = Client
def get_context_data(self, **kwargs):
client = self.object
context = super(ClientDetails, self).get_context_data(**kwargs)
context['servers'] = Server.objects.filter(company=client)
context['users'] = User.objects.filter(company=client)
return context
或使用相关名称
def get_context_data(self, **kwargs):
context = super(ClientDetails, self).get_context_data(**kwargs)
context['servers'] = self.object.server_set.all()
context['users'] = self.object.user_set.all()
return context
推荐阅读
- jmeter - 如何使用 JMeter 将 XML 文件发送到 IBM MQ?
- reactjs - React Accordian 内容滚动到顶部
- react-native - App.js 导航错误:找不到导航对象。您的组件是否在导航器的屏幕内?
- html - 当它们的预定义大小相同时,如何根据每个图像的大小制作 flexbox 大小?
- java - Java,网格包布局。如何将组件添加到其他组件
- android - Google Admob 广告未展示,测试广告效果良好
- python - amazon-CloudWatch 中的“AWS_LOG_STREAM”是什么?
- python - Python:函数在使用整数测试但不在 apply() lambda 函数中时有效
- bash - 在 BASH 脚本下运行时出现解析错误
- php - 将延期交货通知替换为 WooCommerce 购物车页面上每个购物车项目的延期交货数量