【问题标题】:Django: how to get value from model in viewDjango:如何从模型中获取价值
【发布时间】:2023-01-05 07:19:11
【问题描述】:

我有一个视图,它将根据对象的“状态”字段的值有条件地显示面包屑路径。如果我手动设置状态值(例如状态 =“已完成”),这将起作用。但是,作为新手,我不知道如何检索值?

status = Project.status 不工作。

这是视图:

class CompanyProjectsDetailView(DetailBreadcrumbMixin, UpdateView):
    model = Project
    queryset = Project.objects.get_with_counted_notes_documents_todos()
    template_name = 'company_accounts/project_detail.html'
    context_object_name = 'project'
    form_class = ProjectStatusForm
    status = Project.status

    if status == "completed":
        @cached_property
        def crumbs(self):
            return [
                ("projects", reverse(
                    "company_project:" + CompanyProjects.list_view_name, )
                 ),
                (f"completed projects", reverse(
                    "company_project:" + CompanyProjects.list_view_name, )
                 ),
            ]

【问题讨论】:

  • 您需要类(对象)或查询集的实例,而不是尝试访问类(Project.status)
  • 感谢 Alvi15。我想一定是这样的。我只是还没有找到访问实例的方法。

标签: django django-views


【解决方案1】:

我想出了一个方法来让它工作。关键是在 crumbs 方法中获取实例。我想可能有更优雅的方法来实现这一点。

工作视图:

class CompanyProjectsDetailView(DetailBreadcrumbMixin, UpdateView):
    model = Project
    queryset = Project.objects.get_with_counted_notes_documents_todos()
    template_name = 'company_accounts/project_detail.html'
    context_object_name = 'project'
    form_class = ProjectStatusForm
    # pk_url_kwarg = 'project_id'

    @cached_property
    def crumbs(self):
        project = self.get_object()
        if project.status == "completed":
            return [
                ("projects", reverse(
                    "company_project:" + CompanyProjects.list_view_name, )
                 ),
                (f"completed projects", reverse(
                    "company_project:completed_projects" )
                 ),
                (f"{project.title}",
                 reverse(
                     "company_project:" + CompanyProjectsDetailView.detail_view_name,
                     kwargs={'pk': project.id})
                 ),
            ]
        elif project.status == "paused":
            return [
                ("projects", reverse(
                    "company_project:" + CompanyProjects.list_view_name, )
                 ),
                (f"paused projects", reverse(
                    "company_project:paused_projects" )
                 ),
                (f"{project.title}",
                 reverse(
                     "company_project:" + CompanyProjectsDetailView.detail_view_name,
                     kwargs={'pk': project.id})
                 ),
            ]
        else:
            return [
                ("projects", reverse(
                    "company_project:" + CompanyProjects.list_view_name, )
                 ),
                (f"{project.title}",
                 reverse(
                     "company_project:" + CompanyProjectsDetailView.detail_view_name,
                     kwargs={'pk': project.id})
                 ),
            ]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-20
    • 2018-10-15
    • 1970-01-01
    • 2013-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多