我的任务是为假想的公寓预订应用程序创建Django模型。
我的问题是:我可以使用我已定义的模型作为另一个模型中的字段吗?
例如,我将有一个名为&#34的模型;列表"代表被列出的公寓。
class Listing(models.Model):
address = models.IntegerField()
owner = models.CharField(max_length=256)
duration = models.DurationField()
price= models.IntegerField()
我也希望有一个" Booking"一个人预订后代表公寓的模型。它将具有与列表完全相同的信息,并添加了预订者的用户名。那么我可以让我的预订模型使用列表作为字段吗?然后为预订者的用户名添加一个额外的字段。
任何其他提示/评论都非常受欢迎,因为我是Django的初学者。
答案 0 :(得分:3)
我不能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关系感兴趣,
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.ForeignKey(
Listing,
on_delete=models.CASCADE,
)
username = models.Charfield()
请注意,在两个示例中,我使用Charfield
作为用户名,随意使用您需要的任何Django字段。
答案 1 :(得分: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