我正在构建一个django应用程序,它可以显示员工及其工资的数据库。它使用postgres数据库。我正在努力弄清楚如何在不使用URL主键的情况下构建DetailView。我认为使用slug可能是解决方案,但我不确定如何实现,并且在网上搜索时没有太多运气。
所有公司列表的“我的列表”视图:
class AllCompanies(FormMixin, generic.ListView):
template_name = 'AllCompanies.html'
form_class = SearchForm
model = bigdatabase
queryset = bigdatabase.objects.order_by().values('company').distinct()
context_object_name = 'companies'
字符串
示例数据库片段,bigdatabase:
Company EmployeeName Salary
Alpha Jim 100000
Alpha Tim 125000
Beta Bim 90000
型
我的列表视图按预期显示所有唯一的公司名称。但是,我不确定如何继续并构建详细视图以显示每个唯一公司的更多信息。我想显示员工人数,工资中位数等内容。
我也做过类似的事情,为员工构建一个detailview,但是这依赖于在url中使用他们的主键,因为每个员工都是唯一的。由于我的数据库中有许多公司的条目,我如何构建一个detailview和相应的url结构来支持它?
任何建议或指针,以推动这一沿着将不胜感激。
3条答案
按热度按时间jm2pwxwz1#
你可以在你的bigdatabase模型中添加一个slugfield。尝试使用autoslugfield并将其设置为公司名称,如下所示:
字符串
这可以确保您的公司名称将自动被翻译为在URL中使用。例如,当您的公司名称中有空格时,使用str:company将翻译为空格的奇怪字符。在您的URL中使用将其翻译为-。
修改你的模型字段slug确保你的detailview默认获得slug字段。参见文档。
然后,您的视图将类似于:
型
在你的URL中,你可以做上面提到的事情:
型
编码快乐!
soat7uwm2#
我不确定我是否理解正确,但我认为你可以使用这样的东西:
字符串
xeufq47z3#
我有一个类似的情况,我想显示用户配置文件,而不使用他们的
user_id
在URL。所以URL将是http://localhost:8000/accounts/profile/
我能够通过覆盖
ProfileDetailView
中的get_queryset
和get_object
方法来解决这个问题。字符串