Django 3
次に、
次の表は、カラムを追加しすぎて効率が低下した構造です.
カラムとデータのクエリーに時間がかかる場合があります.そこで、2つのテーブルに分けて、次のように接続リングを作成します.
要するに、2つのテーブルを接続できるのは
参照するテーブルは、外部キーからどのテーブルを参照するかを示します.例では、ユーザフォルダのUserテーブル、RoomTypeテーブルを示します.
オブジェクト関係に使用される名前(related name)とは、抽象モデルで関係を定義するときに使用される名前です.例では、これは部屋です.
オブジェクトを削除するときに実行するアクション(on delete)は、「ForeignKey」が表示するテーブルの値が削除されたときに実行するアクションを指定します.例えば、ユーザが削除された場合、残りの部屋を削除するか、エラーを解放して部屋を保護するかなどである.
これは、あなたと
次のコードはManyToManyフィールドで、複数のタイプを複数の部屋に接続できます.
また、
onetomany
、manytoone
、manytomany
関係、およびForeignKey
について説明する.ForeignKey with ManyToOne Field
외래키(Foreign Key)
は表のフィールドであり、他の表の行と識別できるキーを示す.次の表は、カラムを追加しすぎて効率が低下した構造です.
カラムとデータのクエリーに時間がかかる場合があります.そこで、2つのテーブルに分けて、次のように接続リングを作成します.
要するに、2つのテーブルを接続できるのは
Foreign Key
の役割です.class Room(core_models.TimeStampedModel):
host = models.ForeignKey(
"users.User", related_name="rooms", on_delete=models.CASCADE, null=True
)
room_type = models.ForeignKey(
"RoomType", related_name="rooms", on_delete=models.SET_NULL, null=True
)
外部キーを作成するときに必要なパラメータには、参照するテーブル、オブジェクト関係の名前、およびオブジェクトを削除するときに実行するアクションが含まれます.参照するテーブルは、外部キーからどのテーブルを参照するかを示します.例では、ユーザフォルダのUserテーブル、RoomTypeテーブルを示します.
オブジェクト関係に使用される名前(related name)とは、抽象モデルで関係を定義するときに使用される名前です.例では、これは部屋です.
オブジェクトを削除するときに実行するアクション(on delete)は、「ForeignKey」が表示するテーブルの値が削除されたときに実行するアクションを指定します.例えば、ユーザが削除された場合、残りの部屋を削除するか、エラーを解放して部屋を保護するかなどである.
これは、あなたと
ManyToOne(다대일 관계)
のオブジェクトにのみ適用されます.ManyToMany Field
次のコードはManyToManyフィールドで、複数のタイプを複数の部屋に接続できます.
class Amenity(AbstractItem):
class Meta:
verbose_name_plural = "Amenities"
class Facility(AbstractItem):
class Meta:
#abstract = True
verbose_name_plural = "Facilities"
class HouseRule(AbstractItem):
class Meta:
verbose_name = "House Rule"
class Room(core_models.TimeStampedModel):
amenities = models.ManyToManyField("Amenity", related_name="rooms", blank=True)
facilities = models.ManyToManyField("Facility", related_name="rooms", blank=True)
house_rules = models.ManyToManyField("HouseRule", related_name="rooms", blank=True)
この関係では、2つのモデルのいずれかを宣言できます.blank=True
オプションを選択したのは、オプションを指定しないからです.また、
meta class
はクラス内のクラスであり、verbose name(複数)、orderなどを指定できます.abstract=trueはモデルですが、データベースには表示されません.OneToOne Field
OneToOneField
は1:1の関係を表す.class User(AbstractBaseUser):
# 생략
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
上記のコードは、djangoでデフォルトで定義されているユーザーモデルを、新しく作成したProfileモデルに関連付けます.Reference
この問題について(Django 3), 我々は、より多くの情報をここで見つけました https://velog.io/@tritny6516/Django-3テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol