Django外部キークエリーおよびmodelでの@propertyの利点


前の文章では@propertyの使い方について話しましたが、この文章では@propertyのデータベースmodelでのいくつかのテクニックについて話します.また、Djangoのデータベースモデリングの過程で、外部キークエリーと逆クエリーの内容についても話します.あまり言わないで例を見なさい
    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

また,新しい需要が突然提案された場合には,既存のクエリーコードを変更することなく,このデコレーションをテーブルモデルに追加して装飾する方法も可能である.