Django外部キークエリーおよびmodelでの@propertyの利点
3367 ワード
前の文章では@propertyの使い方について話しましたが、この文章では@propertyのデータベースmodelでのいくつかのテクニックについて話します.また、Djangoのデータベースモデリングの過程で、外部キークエリーと逆クエリーの内容についても話します.あまり言わないで例を見なさい
上の2つのテーブルでは、Personテーブルがプライマリテーブルであり、Carがワードテーブルであり、Carテーブルの外部キーがPersonテーブルに接続されています.サブテーブル:
プライマリ・テーブル・クエリー・サブテーブル、すなわち逆クエリー:
誰かの重要な情報を取得するなど、自分が必要とする組合せデータをクエリーします.
また,新しい需要が突然提案された場合には,既存のクエリーコードを変更することなく,このデコレーションをテーブルモデルに追加して装飾する方法も可能である.
from django.db import models
class Person(models.Model):
name = models.CharField(max_length=64)
age = models.IntegerField()
tel = models.CharField(max_length=64)
@property
def all_cars(self):
return cars.all()
@property
def info(self):
# return the name and tel of person
return '%s %s' % (self.name, self.tel)
class Car(models.Model):
owner = models.Foreignkey(Person, related_name='cars')
name = models.CharField(max_length=64)
price = models.FloatField()
上の2つのテーブルでは、Personテーブルがプライマリテーブルであり、Carがワードテーブルであり、Carテーブルの外部キーがPersonテーブルに接続されています.サブテーブル:
car = Car.objects.get(id=1)
#
owner = car.owner
プライマリ・テーブル・クエリー・サブテーブル、すなわち逆クエリー:
Tom = Person.objects.get(id=1)
#
# :
# Django
#
# : . _set()
# queryset
Tom.Car_set().all()
# :
# related_name
Tom.cars.all()
# :
# @property model
Tom.all_cars
誰かの重要な情報を取得するなど、自分が必要とする組合せデータをクエリーします.
Tom.info
また,新しい需要が突然提案された場合には,既存のクエリーコードを変更することなく,このデコレーションをテーブルモデルに追加して装飾する方法も可能である.