为什么会出现此无效语法错误?

时间:2020-07-06 23:21:02

标签: python django

   from django.contrib.admin import helpers, widgets
  File "/Users/Scott/Desktop/myvirtualenv/crazy/lib/python3.7/site-packages/django/contrib/admin/widgets.py", line 152
    


context['related_url'] = mark_safe(related_url)
          ^
SyntaxError: invalid syntax

我不确定为什么会收到此错误,并希望有人可以让我知道我需要在这里做什么?

def get_context(self, name, value, attrs):
    context = super(ForeignKeyRawIdWidget, self).get_context(name, value, attrs)
    rel_to = self.rel.model
    if rel_to in self.admin_site._registry:
        # The related object is registered with the same AdminSite
        related_url = reverse(
            'admin:%s_%s_changelist' % (
                rel_to._meta.app_label,
                rel_to._meta.model_name,
            ),
            current_app=self.admin_site.name,
        )

        params = self.url_parameters()
        if params:
            related_url += '?' + '&'.join(
                ('%s=%s' % (k, v) for k, v in params.items())
        context['related_url'] = mark_safe(related_url)
        context['link_title'] = _('Lookup')
        # The JavaScript code looks for this class.
        context['widget']['attrs'].setdefault('class', 'vForeignKeyRawIdAdminField')
    if context['widget']['value']:
        context['link_label'], context['link_url'] = self.label_and_url_for_value(value)
    return context

这里是发生语法错误的完整代码行。同样,我不确定为什么会收到此错误。据我所知,它与我用Atom编写的代码没有任何关系,但是它是Django的widgets.py文件中实际代码行的一部分。

1 个答案:

答案 0 :(得分:1)

您忘记了SyntaxError上方一行中的右括号。

def get_context(self, name, value, attrs):
    context = super(ForeignKeyRawIdWidget, self).get_context(name, value, attrs)
    rel_to = self.rel.model
    if rel_to in self.admin_site._registry:
        # The related object is registered with the same AdminSite
        related_url = reverse(
            'admin:%s_%s_changelist' % (
                rel_to._meta.app_label,
                rel_to._meta.model_name,
            ),
            current_app=self.admin_site.name,
        )

        params = self.url_parameters()
        if params:
            related_url += '?' + '&'.join(
                ('%s=%s' % (k, v) for k, v in params.items()))  # Added a )
        context['related_url'] = mark_safe(related_url)
        context['link_title'] = _('Lookup')
        # The JavaScript code looks for this class.
        context['widget']['attrs'].setdefault('class', 'vForeignKeyRawIdAdminField')
    if context['widget']['value']:
        context['link_label'], context['link_url'] = self.label_and_url_for_value(value)
    return context