model定义
class Article(models.Model): userid = models.ForeignKey(User, null=True, blank=True, verbose_name='登陆人',on_delete=models.CASCADE) avatar = models.ImageField(upload_to='article/%Y%m%d/', null=True,blank=True) category = models.ManyToManyField(Category, null=True,blank=True,verbose_name="分类" )
article数据
catagory数据
c1=Category.objects.get(id=15) c2=Category.objects.get(id=20) c3=Category.objects.get(id=32) a1=Article.objects.get(id=126) a2=Article.objects.get(id=127) a3=Article.objects.get(id=128) #一。1、article 添加catagroy: 重复添加没问题 #a1.category.add(c2) #a2.category.add(c1,c2,c3) list_cata=[c1,c2] a1.category.set(list_cata) a2.category.set(list_cata) c1.article_set.clear() a1.category.clear() #一。2、catagory 也可以添加article,或删除文章: #c2.article_set.add(a3,a1) #c2.article_set.remove(a2) #二、新建catagory: a1是既存,catagory是新增的,一般用于tag标签,输入就是添加 #a1.category.create(level=1,title='新增加catagory') #三、查询文章所有catagory,article里定义了catagory,所以直接.catagory cata=a1.category.all() #print(cata) #四、catagory里没有定义article,所以用.article_set 来引用 articles=c1.article_set.all() #print(articles) #组合查询 articles = Article.objects.filter(category__id=15) articles = Article.objects.filter(category=15)#与上面一样 #print(articles) articles = Article.objects.filter(category__title__startswith='通知') articles = Article.objects.filter(category__title__startswith='通知').distinct() articles = Article.objects.filter(category__title__startswith='通知').distinct().count() #print(articles) catagorys=Category.objects.filter(article__title__startswith="尊师重教") print(catagorys) catagorys=Category.objects.filter(article__id=127) print(catagorys) catagorys=Category.objects.filter(article__id__in=[126,127])#产生重复 catagorys=Category.objects.filter(article__id__in=[126,127]).distinct()#去掉重复 print(catagorys) args=Article.objects.exclude(category=15) #查到的数据就很多了 print(args)