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)
list_cata=[c1,c3]
#當a2.set(),會把原有的catagory關係刪除,替換成set中的新的list
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)