В вашей функции вы присваиваете переменной с именем company
, поэтому Python рассматривает company
как локальную переменную, но в этот момент она не назначена, поэтому вам нужно будет использовать имя переменной anoterчтобы избежать этого:
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 = get_object_or_404(group1, pk=pk2)
return group1
Поскольку вы здесь, однако, не используете company_obj
, вы можете отказаться от имени переменной:
def get_object(self):
pk1 = self.kwargs['pk1']
pk2 = self.kwargs['pk2']
get_object_or_404(company, pk=pk1)
group1 = get_object_or_404(group1, pk=pk2)
return group1
в качестве альтернативы, если ваш 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 = get_object_or_404(group1, pk=pk2<b>, company=company_obj</b>)
return group1
Примечание : PEP-8 [Python-doc] советует имена классов записывать в CamelCase
, тогда как поля и локальные переменные пишутся в lower_case
.Нередко можно увидеть что-то вроде some_class = SomeClass()
, поэтому случай верблюда начинается с заглавной буквы, столкновения между локальными переменными и классами никогда не будут существовать.