urls py url my_categories CategoryView as_view name category url my_ca

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
urls.py :
url(r'^my_categories/$', CategoryView.as_view(), name='category'),
url(r'^my_categories/add_new_category/$', AddCategoryView.as_view(), name='add-new-category'),
url(r'^my_categories/(?P<category_name>\w+)/my_subcategories/$', SubcategoryView.as_view(), name='subcategory'),
url(r'^my_categories/(?P<category_name>\w+)/my_subcategories/add_new_subcategory/$', AddSubcategoryView.as_view(), name='add-new-subcategory'),
вьюха:
class SubcategoryView(TemplateView):
template_name = 'subcategories.html'
def get_context_data(self, category_name, **kwargs): # вот сюда я передал имя текущей категории из урла.
context = super(SubcategoryView, self).get_context_data(**kwargs)
current_category_id = Category.objects.get(user=self.request.user, category_name=category_name).id # тут я его заюзал чтобы что то там правильно вытащить
context['current_subcategories'] = Subcategory.objects.filter(id=current_category_id)
return context
class AddSubcategoryView(TemplateView, FormView):
template_name = 'add-new-subcategory.html'
form_class = AddSubcategoryForm
# def get_context_data(self, category_name, **kwargs):
# current_category_id = Category.objects.get(user=self.request.user, category_name=category_name).id
# context = super(AddSubcategoryView, self).get_context_data(**kwargs)
# return context
def form_valid(self, form, category_name): # тут я хочу сделать тоже самое
data = form.cleaned_data
current_category_id = Category.objects.get(user=self.request.user, category_name=category_name).id # тут я буду его юзать, чтобы вытащить нужный ид
repeated_names = Subcategory.objects.filter(user=self.request.user,
current_category_id=current_category_id,
subcategory_name=data['subcategory_name'])
if not repeated_names:
_ = Subcategory.objects.create(user=self.request.user,
current_category_id=current_category_id,
subcategory_name=data['subcategory_name']) # чтобы тут его потом сохранить
return HttpResponseRedirect('/my_subcategories')
получаю собсно
form_valid() takes exactly 3 arguments (2 given)