【问题标题】:Django Database DuplicatesDjango 数据库重复
【发布时间】:2020-09-01 23:40:48
【问题描述】:

我不完全知道如何诊断我的这个问题,但我相信我的 Postgres 数据库中有重复的表。我之所以这么说,是因为当我转到我的管理页面时,我看到来自我的projects 表的条目也是blog post 表的一部分。我想把这些分开。我在尝试搜索我的博客时也发现了问题。以下是错误消息:

Exception Type: VariableDoesNotExist
Exception Value: Failed lookup for key [username] in ''

这让我相信搜索算法在查找重复项时遇到了问题,尤其是因为我的搜索结果中甚至都没有找到 blog posts。仅找到 project 对象。

如何查看 Postgres 数据库或进一步诊断我的问题?

编辑下面是我的模型脚本:

from django.db import models
from mezzanine.blog.models import BlogPost, BlogCategory
# Create your models here.

class Projects(BlogPost):
    pass

class ProjectsCategory(BlogCategory):
    pass

这些模型继承自 Mezzanine CMS 提供的 BlogPost 对象。我直接复制了视图并用它创建了新的Projects 对象。

下面是Mezzanine提供的搜索功能:

def search(request, template="search_results.html", extra_context=None):
    """
    Display search results. Takes an optional "contenttype" GET parameter
    in the form "app-name.ModelName" to limit search results to a single model.
    """
    query = request.GET.get("q", "")
    page = request.GET.get("page", 1)
    per_page = settings.SEARCH_PER_PAGE
    max_paging_links = settings.MAX_PAGING_LINKS
    try:
        parts = request.GET.get("type", "").split(".", 1)
        search_model = apps.get_model(*parts)
        search_model.objects.search  # Attribute check
    except (ValueError, TypeError, LookupError, AttributeError):
        search_model = Displayable
        search_type = _("Everything")
    else:
        search_type = search_model._meta.verbose_name_plural.capitalize()
    results = search_model.objects.search(query, for_user=request.user)
    paginated = paginate(results, page, per_page, max_paging_links)
    context = {"query": query, "results": paginated,
               "search_type": search_type}
    context.update(extra_context or {})
    return TemplateResponse(request, template, context)

【问题讨论】:

    标签: python django postgresql mezzanine


    【解决方案1】:

    我看到我的项目表中的条目也是博客文章表的一部分

    这令人担忧,但它可能只是过去的一个小问题。一般来说,将数据从一个表复制到另一个具有不同列的不相关表需要一些直接的努力。

    您的数据库存在于服务器计算机上的某处,或者位于云上的另一台服务器上,并且该信息可能位于您的配置文件中或默认为localhost:5432。如果它在您的本地计算机上或可公开访问,您可以使用 DataGrip 之类的工具登录并浏览表格。或者,您可以使用它所在机器上的 shell 登录到 postgres 并直接运行查询。

    我猜这不是你的问题,你可以删除坏数据。

    对于搜索问题,我们需要查看代码以确定它为什么不起作用。你能添加你的模型和搜索代码吗?

    【讨论】:

    • 我已经从数据库中删除了对象,看看是否能解决问题。但是,它不能解决它。我一直想知道当我最初迁移我的模型时,我的project 对象是否以某种方式变成了blog posts。我已经添加了一些代码。感谢您的回复,亚历克斯!
    猜你喜欢
    • 1970-01-01
    • 2019-06-14
    • 2016-04-08
    • 1970-01-01
    • 2018-04-09
    • 2019-02-01
    • 2021-05-05
    • 1970-01-01
    • 2021-10-20
    相关资源
    最近更新 更多