2017-11-01 9 views
0

私は架空のアパートメント予約アプリケーションのためにDjangoモデルを作成することを任されています。別のモデルのフィールドとしてdjangoモデルを使用していますか?

私の質問は、私が定義したモデルを別のモデルのフィールドとして使うことができますか?

たとえば、リストされているアパートメントを表す「リスト」というモデルが1つあります。

class Listing(models.Model): 
    address = models.IntegerField() 
    owner = models.CharField(max_length=256) 
    duration = models.DurationField() 
    price= models.IntegerField() 

私はまた、誰かがそれを予約した後にアパートを表し、「予約」のモデルを持っていると思います。それは、それを予約した人のユーザ名を加えたリストとまったく同じ情報を持つでしょう。だから私は私の予約モデルを使用することができますフィールドとしてのリスト?そして、ブックマークのユーザー名のフィールドを1つ追加してください。

私がDjangoの完全な初心者であるので、その他のヒント/評価は高く評価されています。

+0

リストは、複数の人で予約することができます:

The docs on this topic.

あなたはこのようなものがあるでしょうか?あなたは新しいフィールドを必要としない、関係が必要 –

+0

いいえ、一人だけ。だから私の予約モデルでは、 "listing = models.OneToOneField(Listing、on_delete、etc ...)のようなものがありますか? – Kelly

答えて

1

フィールドとしてのモデルの概念は奇数です。あなたができることは、モデル間の関係を確立すること、または互いにモデルを継承することです。あなたの状況を考えると、あなたは多分リストから予約を継承することができます。

class Listing(models.Model): 
    address = models.IntegerField() 
    owner = models.CharField(max_length=256) 
    duration = models.DurationField() 
    price= models.IntegerField() 

class Booking(Listing): 
    #your new fields 
+0

ありがとうございます! – Kelly

2

私はあなたがフィールド

として使用リストで何を意味するか、100%わからないんだけど、でも、私には、あなたはDjangoの中に存在するさまざまな組み込みのモデルとの関係を見てする必要があります。あなたの特定のケースで

、あなたはおそらくそうのようなOne-to-One関係を使用したいと思うでしょう、ユーザが一度に複数のアパートを予約することができれば、

class Listing(models.Model): 
    address = models.IntegerField() 
    owner = models.CharField(max_length=256) 
    duration = models.DurationField() 
    price= models.IntegerField() 

class Booking(models.Model): 
    listing= models.OneToOneField(
    Listing, 
    on_delete=models.CASCADE, 
    ) 
    username = models.Charfield() 

は今、あなたはForeignKeyに興味があるでしょう私は、ユーザー名のためにCharfieldを使用し、両方の例では、何が必要Djangoのフィールドを使用して自由に感じることに注意してくださいので、

​​

のような関係。

+0

これは大変助けになります、ありがとう! – Kelly

関連する問題