Django:UnboundLocalError:分配前已引用局部变量“ company” [英] Django: UnboundLocalError: local variable 'company' referenced before assignment
问题描述
我正在尝试通过在其详细信息视图中传递两个主键来创建url字段...
I am trying to make a url field in my detail view by passing two primary key in it...
这是我在urls.py中所做的:
This is what I have done in 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列表视图中,我这样做:
And in my group1 list view I have done this:
<a href="{% url 'accounting_double_entry:groupdetail' pk1=company_details.pk pk2=group1_details.pk %}">{{group1.group_Name}}</a>
有人可以告诉我这段代码我在做什么吗?
Can anyone tell me what I am doing wrong in this code?
谢谢
推荐答案
在您的函数中,您分配一个变量名为 company
,因此Python会将 company
视为局部变量,但此时未分配,因此您需要使用另一个变量名来避免这种情况:
In your function, you assign to a variable named company
, so Python considers company
to be a local variable, but at that moment unassigned, so you will need to use another variable name to avoid this:
def get_object(self):
pk1 = self.kwargs['pk1']
pk2 = self.kwargs['pk2']
# make sure the variable name is different than the model name
company_obj = get_object_or_404(company, pk=pk1)
group1_obj = get_object_or_404(group1, pk=pk2)
return group1_obj
从这里开始但是不要使用 company_obj
,则可能要删除变量名称:
Since you here however do not use company_obj
, you might want to drop the variable name:
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
是相关的,到公司
,并且您想检查该行是否成立,可以对该公司进行过滤:
as an alternative, if your group1
is "related" to company
, and you want to chekck if that holds, it makes sense to filter on that company:
def get_object(self):
pk1 = self.kwargs['pk1']
pk2 = self.kwargs['pk2']
company_obj = get_object_or_404(company, pk=pk1)
group1_obj = get_object_or_404(group1, pk=pk2, company=company_obj)
return group1_obj
注意: PEP-8 [Python-doc] 建议使用
CamelCase
编写的类名,而字段和局部变量则用lower_case
编写。看到类似some_class = SomeClass()
的情况并不少见,因此因为骆驼的情况以大写字母开头,所以局部变量和类之间的冲突将永远不会存在。 p>
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.
这篇关于Django:UnboundLocalError:分配前已引用局部变量“ company”的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!