Django: UnboundLocalError: local variable 'company' referenced before assignment
Django: UnboundLocalError: local variable 'company' referenced before assignment
我试图通过在其中传递两个主键来在我的详细信息视图中创建一个 url 字段...
这是我在 urls.py 中所做的:
url(r'^company/(?P<pk1>\d+)/groupdetail/(?P<pk2>\d+)/$',views.group1DetailView.as_view(),name='groupdetail'),
在我看来:
def get_object(self):
pk1 = self.kwargs['pk1']
pk2 = self.kwargs['pk2']
company = get_object_or_404(company, pk=pk1)
group1 = get_object_or_404(group1, pk=pk2)
return group1
我在这一行中遇到错误:
company = get_object_or_404(company, pk=pk1)
在我的 group1 列表视图中,我这样做了:
<a href="{% url 'accounting_double_entry:groupdetail' pk1=company_details.pk pk2=group1_details.pk %}">{{group1.group_Name}}</a>
谁能告诉我我在这段代码中做错了什么?
谢谢
在你的函数中,你将赋给一个名为company
的变量,所以Python认为company
是一个局部变量,但是在那一刻未分配,所以你需要使用另一个变量名来避免这种情况:
def get_object(self):
pk1 = self.kwargs['pk1']
pk2 = self.kwargs['pk2']
# make sure the variable name is different than the model name
<b>company_obj</b> = get_object_or_404(<b>company</b>, pk=pk1)
group1_obj = get_object_or_404(group1, pk=pk2)
return group1_obj
既然你在这里没有使用 company_obj
,你可能想要删除变量名:
def get_object(self):
pk1 = self.kwargs['pk1']
pk2 = self.kwargs['pk2']
get_object_or_404(company, pk=pk1)
group1_obj = get_object_or_404(group1, pk=pk2)
return group1_obj
作为替代方案,如果您的 group1
与 company
“相关”,并且您想检查是否成立,那么过滤该公司是有意义的:
def get_object(self):
pk1 = self.kwargs['pk1']
pk2 = self.kwargs['pk2']
<b>company_obj</b> = get_object_or_404(company, pk=pk1)
group1_obj = get_object_or_404(group1, pk=pk2<b>, company=company_obj</b>)
return group1_obj
Note: PEP-8 [Python-doc] advices class names to be written in CamelCase
, whereas fields and local variables are written in lower_case
. It is not uncommon to see something like some_class = SomeClass()
, so because the camel case starts with an uppercase, clashes between local variables and classes, will never exist.
我试图通过在其中传递两个主键来在我的详细信息视图中创建一个 url 字段...
这是我在 urls.py 中所做的:
url(r'^company/(?P<pk1>\d+)/groupdetail/(?P<pk2>\d+)/$',views.group1DetailView.as_view(),name='groupdetail'),
在我看来:
def get_object(self):
pk1 = self.kwargs['pk1']
pk2 = self.kwargs['pk2']
company = get_object_or_404(company, pk=pk1)
group1 = get_object_or_404(group1, pk=pk2)
return group1
我在这一行中遇到错误:
company = get_object_or_404(company, pk=pk1)
在我的 group1 列表视图中,我这样做了:
<a href="{% url 'accounting_double_entry:groupdetail' pk1=company_details.pk pk2=group1_details.pk %}">{{group1.group_Name}}</a>
谁能告诉我我在这段代码中做错了什么?
谢谢
在你的函数中,你将赋给一个名为company
的变量,所以Python认为company
是一个局部变量,但是在那一刻未分配,所以你需要使用另一个变量名来避免这种情况:
def get_object(self):
pk1 = self.kwargs['pk1']
pk2 = self.kwargs['pk2']
# make sure the variable name is different than the model name
<b>company_obj</b> = get_object_or_404(<b>company</b>, pk=pk1)
group1_obj = get_object_or_404(group1, pk=pk2)
return group1_obj
既然你在这里没有使用 company_obj
,你可能想要删除变量名:
def get_object(self):
pk1 = self.kwargs['pk1']
pk2 = self.kwargs['pk2']
get_object_or_404(company, pk=pk1)
group1_obj = get_object_or_404(group1, pk=pk2)
return group1_obj
作为替代方案,如果您的 group1
与 company
“相关”,并且您想检查是否成立,那么过滤该公司是有意义的:
def get_object(self):
pk1 = self.kwargs['pk1']
pk2 = self.kwargs['pk2']
<b>company_obj</b> = get_object_or_404(company, pk=pk1)
group1_obj = get_object_or_404(group1, pk=pk2<b>, company=company_obj</b>)
return group1_obj
Note: PEP-8 [Python-doc] advices class names to be written in
CamelCase
, whereas fields and local variables are written inlower_case
. It is not uncommon to see something likesome_class = SomeClass()
, so because the camel case starts with an uppercase, clashes between local variables and classes, will never exist.