Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python &引用;“用户匹配查询不存在”;发生在模板中,但不在单元测试中?_Python_Sql_Django_Database - Fatal编程技术网

Python &引用;“用户匹配查询不存在”;发生在模板中,但不在单元测试中?

Python &引用;“用户匹配查询不存在”;发生在模板中,但不在单元测试中?,python,sql,django,database,Python,Sql,Django,Database,在Django项目中,有一个定义类似于以下内容的系列模型: class Family(BaseFamily): employee_first_name = models.CharField(max_length=255, blank=True) employee_last_name = models.CharField(max_length=255, blank=True) partner_first_name = models.CharField(max_length=

在Django项目中,有一个定义类似于以下内容的
系列
模型:

class Family(BaseFamily):
    employee_first_name = models.CharField(max_length=255, blank=True)
    employee_last_name = models.CharField(max_length=255, blank=True)
    partner_first_name = models.CharField(max_length=255, blank=True)
    partner_last_name = models.CharField(max_length=255, blank=True)
其中
BaseFamily
有一个
lucy\u指南
外键:

class BaseFamily(TimeStampedModel):
    package = models.ForeignKey('lucy_web.Package',
                                models.SET_NULL,
                                blank=True,
                                null=True)
    lucy_guide = models.ForeignKey(
        User,
        blank=True,
        null=True,
        related_name='lucy_guide_%(class)s',
        limit_choices_to={'is_staff': True})
模型依次链接到一家
公司

class Package(TimeStampedModel):
    company = models.ForeignKey('lucy_web.Company')
公司
则有一个
lucy\u指南
和一个
default\u包

class Company(TimeStampedModel):
    lucy_guide = models.ForeignKey(
        User,
        blank=True,
        null=True,
        related_name='lucy_guide_%(class)s',
        limit_choices_to={'is_staff': True})
    default_package = models.OneToOneField(
        Package,
        blank=True,
        null=True,
        related_name='default_for_%(class)s')
现在,我有一个使用以下模板标记的模板,
edit\u view\u family\u heading

from django import template

register = template.Library()


@register.simple_tag
def edit_view_family_heading(family):
    heading = [family.employee_first_name]

    if family.employee_last_name != family.partner_last_name:
        heading.append(family.employee_last_name)

    heading.extend([
        '&',
        family.partner_first_name,
        family.partner_last_name
    ])

    heading = [e for e in heading if e]

    if heading[0] == '&':
        heading.pop(0)

    if heading and heading[-1] == '&':
        heading.pop()

    if heading:
        if family.lucy_guide:
            heading.append(f'({family.lucy_guide.first_name})')

        return ' '.join(heading)
    else:
        return family.id
但是,如果尝试显示模板,则会出现以下错误:

Template error:
In template /Users/kurtpeek/Documents/Dev/lucy2/lucy-web/dashboard/templates/dashboard.html, error at line 0
   User matching query does not exist.   1 : {% load static %}
   2 : {% load sass_tags %}
   3 : {% load compress %}
   4 : {% load google_analytics %}
   5 : {% load active_page %}
   6 : 
   7 : <!DOCTYPE html>
   8 : <html lang="en">
   9 : <head>
   10 :   <title>Cleo Admin | {% block page_title %}{% endblock %}</title>


Traceback:

File "/Users/kurtpeek/Documents/Dev/lucy2/lucy-web/venv/lib/python3.6/site-packages/django/db/models/fields/related_descriptors.py" in __get__
  178.             rel_obj = getattr(instance, self.cache_name)

During handling of the above exception ('Family' object has no attribute '_lucy_guide_cache'), another exception occurred:

File "/Users/kurtpeek/Documents/Dev/lucy2/lucy-web/venv/lib/python3.6/site-packages/django/core/handlers/exception.py" in inner
  41.             response = get_response(request)

File "/Users/kurtpeek/Documents/Dev/lucy2/lucy-web/venv/lib/python3.6/site-packages/django/core/handlers/base.py" in _get_response
  217.                 response = self.process_exception_by_middleware(e, request)

File "/Users/kurtpeek/Documents/Dev/lucy2/lucy-web/venv/lib/python3.6/site-packages/django/core/handlers/base.py" in _get_response
  215.                 response = response.render()

File "/Users/kurtpeek/Documents/Dev/lucy2/lucy-web/venv/lib/python3.6/site-packages/django/template/response.py" in render
  107.             self.content = self.rendered_content

File "/Users/kurtpeek/Documents/Dev/lucy2/lucy-web/venv/lib/python3.6/site-packages/django/template/response.py" in rendered_content
  84.         content = template.render(context, self._request)

File "/Users/kurtpeek/Documents/Dev/lucy2/lucy-web/venv/lib/python3.6/site-packages/django/template/backends/django.py" in render
  66.             return self.template.render(context)

File "/Users/kurtpeek/Documents/Dev/lucy2/lucy-web/venv/lib/python3.6/site-packages/django/template/base.py" in render
  207.                     return self._render(context)

File "/Users/kurtpeek/Documents/Dev/lucy2/lucy-web/venv/lib/python3.6/site-packages/django/template/base.py" in _render
  199.         return self.nodelist.render(context)

File "/Users/kurtpeek/Documents/Dev/lucy2/lucy-web/venv/lib/python3.6/site-packages/django/template/base.py" in render
  990.                 bit = node.render_annotated(context)

File "/Users/kurtpeek/Documents/Dev/lucy2/lucy-web/venv/lib/python3.6/site-packages/django/template/base.py" in render_annotated
  957.             return self.render(context)

File "/Users/kurtpeek/Documents/Dev/lucy2/lucy-web/venv/lib/python3.6/site-packages/django/template/loader_tags.py" in render
  177.             return compiled_parent._render(context)

File "/Users/kurtpeek/Documents/Dev/lucy2/lucy-web/venv/lib/python3.6/site-packages/django/template/base.py" in _render
  199.         return self.nodelist.render(context)

File "/Users/kurtpeek/Documents/Dev/lucy2/lucy-web/venv/lib/python3.6/site-packages/django/template/base.py" in render
  990.                 bit = node.render_annotated(context)

File "/Users/kurtpeek/Documents/Dev/lucy2/lucy-web/venv/lib/python3.6/site-packages/django/template/base.py" in render_annotated
  957.             return self.render(context)

File "/Users/kurtpeek/Documents/Dev/lucy2/lucy-web/venv/lib/python3.6/site-packages/django/template/loader_tags.py" in render
  72.                 result = block.nodelist.render(context)

File "/Users/kurtpeek/Documents/Dev/lucy2/lucy-web/venv/lib/python3.6/site-packages/django/template/base.py" in render
  990.                 bit = node.render_annotated(context)

File "/Users/kurtpeek/Documents/Dev/lucy2/lucy-web/venv/lib/python3.6/site-packages/django/template/base.py" in render_annotated
  957.             return self.render(context)

File "/Users/kurtpeek/Documents/Dev/lucy2/lucy-web/venv/lib/python3.6/site-packages/django/template/library.py" in render
  203.         output = self.func(*resolved_args, **resolved_kwargs)

File "/Users/kurtpeek/Documents/Dev/lucy2/lucy-web/dashboard/templatetags/edit_view_family_heading.py" in edit_view_family_heading
  28.         if family.lucy_guide:

File "/Users/kurtpeek/Documents/Dev/lucy2/lucy-web/venv/lib/python3.6/site-packages/django/db/models/fields/related_descriptors.py" in __get__
  184.                 rel_obj = self.get_object(instance)

File "/Users/kurtpeek/Documents/Dev/lucy2/lucy-web/venv/lib/python3.6/site-packages/django/db/models/fields/related_descriptors.py" in get_object
  159.         return qs.get(self.field.get_reverse_related_filter(instance))

File "/Users/kurtpeek/Documents/Dev/lucy2/lucy-web/venv/lib/python3.6/site-packages/django/db/models/query.py" in get
  380.                 self.model._meta.object_name

Exception Type: DoesNotExist at /dashboard/families/763/case-management
Exception Value: User matching query does not exist.
换句话说,视图使用的是正确的模板,当作为常规功能进行测试时,模板标记的行为符合预期,即使该族没有
lucy\u指南

我怀疑我的数据库处于一种“奇怪”的状态,在这个相互关联的模型链的某个地方缺少了一些东西,但我正在努力缩小范围。对调试此错误有什么建议吗

更新

查看数据库(使用pgAdmin 4),问题中的
系列
似乎有一个
lucy\u guide\u id

但是,
auth_user
表中没有与此
id
对应的行:

我怀疑这与_delete=models上的
有关。为
外键设置_NULL
选项,但我在文档()中没有看到任何指示任何选项会允许数据库进入这种“损坏”状态的内容


你知道数据库是如何进入这种状态的吗?我又是如何在单元测试中重现这种错误的?

我最后打电话给了
家族。lucy_guide
中的
try
<代码>除块外:

    try:
        if family.lucy_guide:
            heading.append(f'({family.lucy_guide.first_name})')
    except ObjectDoesNotExist:
        pass
其中,
ObjectDoesNotExist
是从
django.core.exceptions
导入的。页面现在正常加载

    try:
        if family.lucy_guide:
            heading.append(f'({family.lucy_guide.first_name})')
    except ObjectDoesNotExist:
        pass