m2m數據操作

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)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章