Django——Xadmin中使用form限制对条目id列表

来源:互联网 发布:网络直播行业自律 编辑:程序博客网 时间:2024/05/18 02:10

item_ids = models.TextField('条目id列表,一行一个id', max_length=3000)
from meila_admin.meila.forms import TopListForm
在TopListAdmin中添加form = TopListForm
class TopListAdmin(object):    verbose_name = '产品榜单'    menu_group = 'toplist_group'    list_display = ('id','list_type','title','summary','img_img','item_ids','show_status','parent','create_time','update_time')    list_filter = ('list_type','title')    app_label = 'oms'    form = TopListForm
在meila_admin/meila_admin/meila/forms.py中有:

class TopListForm(forms.ModelForm):    class Meta:        model = models.TopList    def clean_item_ids(self):        item_ids = self.cleaned_data.get('item_ids')        list_type = self.cleaned_data.get('list_type')        items = [t.strip() for t in item_ids.split()]        for item in items:            if not item.isdigit():                raise forms.ValidationError('条目id必须为整数:%s' % item)        items = map(int, items)        objs = []        if list_type==MeilaTopListType.vtalk:            objs = models.VTalk.objects.filter(id__in=items)        elif list_type==MeilaTopListType.product:            objs = Product.objects.filter(id__in=items)        if not len(objs)==len(items):            obj_ids = [o.id for o in objs]            not_ids = [str(i) for i in items if i not in obj_ids]            raise  forms.ValidationError('条目不存在:%s' %  ', '.join(not_ids))        return '\r\n'.join(map(str, items))


















0 0
原创粉丝点击