|
|
|
from django import forms
|
|
|
|
from django.core.exceptions import ValidationError
|
|
|
|
|
|
|
|
from apps.goods.models import *
|
|
|
|
from apps.goods.views import *
|
|
|
|
|
|
|
|
|
|
|
|
class GoodsCateForm(forms.Form):
|
|
|
|
name = forms.CharField(label='分类名称', min_length=2, widget=forms.widgets.TextInput(
|
|
|
|
attrs={'class': 'form-control', 'placeholder': '请输入分类名称'}),
|
|
|
|
error_messages={'required': '分类名称不能为空!', 'min_length': '长度最小2位'})
|
|
|
|
parent_id = forms.CharField(label='选择父类', max_length=20, required=False,
|
|
|
|
widget=forms.widgets.Select(
|
|
|
|
attrs={'class': 'form-control custom-select', 'placeholder': '选择父类'}),
|
|
|
|
error_messages={'required': '请选择父类'})
|
|
|
|
sort = forms.CharField(label='排序', widget=forms.widgets.TextInput(
|
|
|
|
attrs={'class': 'form-control', 'placeholder': '请输入数字'}), error_messages={'required': '排序不能为空'})
|
|
|
|
logo = forms.ImageField(label='分类图片', required=False,
|
|
|
|
widget=forms.widgets.FileInput(attrs={'class': 'custom-file-input'}))
|
|
|
|
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
|
|
super(GoodsCateForm, self).__init__(*args, **kwargs)
|
|
|
|
cate_all = GoodsCategory.objects.all()
|
|
|
|
self.alist = [('', '请选择...')]
|
|
|
|
self.fields['parent_id'].widget.choices = self.bind_data(cate_all, 0, 1)
|
|
|
|
|
|
|
|
def bind_data(self, datas_all, _id, n):
|
|
|
|
if _id == 0:
|
|
|
|
print(111111111111)
|
|
|
|
datas = datas_all.filter(parent__isnull=True)
|
|
|
|
print(datas)
|
|
|
|
else:
|
|
|
|
print(222222222222)
|
|
|
|
datas = datas_all.filter(parent_id=_id)
|
|
|
|
print(datas)
|
|
|
|
for data in datas:
|
|
|
|
print(data)
|
|
|
|
self.alist.append((data.id, self.space_length(n) + data.name))
|
|
|
|
|
|
|
|
self.bind_data(datas_all, data.id, n+2)
|
|
|
|
print(self.alist)
|
|
|
|
return self.alist
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
def space_length(i):
|
|
|
|
space = ''
|
|
|
|
for j in range(1, i):
|
|
|
|
space += '--'
|
|
|
|
return space + '|--'
|