class Category(models.Model):
title=models.CharField(max_length=100,verbose_name=_('title'))
parent=models.ForeignKey("self",verbose_name=_('parent'))
orderNum=models.IntegerField(default=1,verbose_name=_('order number'))
addtime=models.DateTimeField(auto_now_add=True,editable=False,verbose_name=_('addtime'))
updatetime=models.DateTimeField(auto_now=True,editable=False,verbose_name=_('updatetime'))
order_label=models.CharField(max_length=100,editable=False,blank=True,null=True)
order_label_len=models.IntegerField(default=1,editable=False,blank=True,null=True)
def __unicode__(self):
if self.order_label==None:
return '%s' %(self.title)
else:
return '%s%s' %(len(self.order_label.split("_"))*'--',self.title)
def len_order_label(self):
return len(self.order_label)
class Meta:
verbose_name_plural=_('column')
verbose_name=_('column')
ordering = ['order_label','orderNum','-addtime']
def category_image(self):
if self.image is not None and self.image.name is not '':
return u"<img src=%s width=50 />" %(settings.MEDIA_URL+self.image.name)
else:
return u'No image here'
category_image.short_description = _('category')
category_image.allow_tags = True
def save_model(self, request, obj, form, change):
"""
Given a model instance save it to the database.
"""
if change == True:
category = Category.objects.extra(where=['id=%s'], params=[obj.id])[0]
if len(form.changed_data) != 0:
for item in form.changed_data:
if item == 'image':
delete_file(category.image.name)
if obj.parent.order_label:
obj.order_label=str(obj.parent.order_label)+"_"+str(obj.orderNum)
else:
obj.order_label=str(obj.orderNum)
obj.order_label_len=len(obj.order_label)
obj.save()
reorderCategory()
def reorderCategory():
category_list = Category.objects.all()
for item in category_list:
if item.id != 1:
if item.parent.order_label:
item.order_label = str(item.parent.order_label) + "_" + str(item.orderNum)
else:
item.order_label = str(item.orderNum)
item.save()
python django二级分类表现
最新推荐文章于 2025-04-21 09:07:26 发布