DjangoでのORMペアマルチモデルの追加、削除、変更、ノートの検索

2694 ワード

class Colors(models.Model):
    colors = models.CharField(max_length=10,verbose_name=' ') 
    
    class Meta:
        vebose_name = ' '
        vebose_name_plural = ' '


class Clothes(models.Model):
    color = models.ForeignKey("Colors",verbose_name=' ') 
    description = models.CharField(max_length=10,verbosename=' ') 

    class Meta:
        verbose_name = ' '
        vebose_name_plural = ' '

一、調べる


(一)メインテーブルデータの検索:


1.プライマリ・テーブルからの直接クエリー:

color = models.Colors.objects.get(clothes__description=" ").colors)  # 

2.プライマリ・テーブルをテーブルから問い合わせるには、次の手順に従います。

color = models.Clothes.objects.get(description=" ").color.colors

(二)スレーブテーブルデータの検索:


1.プライマリ・テーブルからのクエリー:

color_obj = models.Colors.objects.get(colors=" ")
qs = color_obj.clothes_set.all() # _set , related_name , ( clothes_set)

2.テーブルからの問合せ:


(1)オブジェクトによるクエリー:
qs = models.Clothes.objects.filter(color=models.Colors.objects.get(colors=" "))
# ( )
#qs = models.Clothes.objects.filter(color__colors=" ")

(2)idクエリによる:
color_id=models.Colors.objects.get(colors=" ").id  # id
qs = models.Clothes.objects.filter(color_id=color_id)

二、増加:


(一)オブジェクトを通過する:

models.Clothes.objects.create(color=models.Colors.objects.get(colors=" "),description=" ")

(二)idを通過する:

models.Clothes.objects.create(color_id=models.Colors.objects.get(colors=" ").id,description=" ")

三、削除


(一)

models.Clothes.objects.get(description=" ").delete() # QuerySet delete()

(二)

models.Colors.objects.filter(colors=" ").delete()

四、改める


(一)オブジェクトを通過する:

models.Clothes.objects.filter(color__colors=" ").update(description=" ")

(二)idを通過する:

models.Clothes.objects.filter(color_id=models.Colors.objects.get(colors=" ").id).update(description=" ")

(三)従表の_setメソッド逆クエリー:

colors_obj=models.Colors.objects.get(colors=" ")
colors_obj.clothes_set.filter(id__gte=1).update(description=" ")
# (Clothes) related_name( 'cls'), :
#colors_obj.cls.filter(id__gte=1).update(description=" ")