使用 Django 模型作为另一个模型的字段?
Using a django model as a field for another model?
我的任务是为假设的公寓预订应用程序创建 Django 模型。
我的问题是:我可以使用我定义的模型作为另一个模型中的字段吗?
例如,我将有一个名为 "Listing" 的模型,代表正在列出的公寓。
class Listing(models.Model):
address = models.IntegerField()
owner = models.CharField(max_length=256)
duration = models.DurationField()
price= models.IntegerField()
我还想要一个 "Booking" 模型来代表有人预订的公寓。它将具有与列表完全相同的信息,并添加了预订者的用户名。那么我可以让我的 Booking 模型使用 Listing 作为字段吗?然后为预订者的用户名添加一个额外的字段。
非常感谢任何其他 tips/critiques,因为我是 Django 的完全初学者。
我不是 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 字段。
模型作为字段的概念很奇怪。您可以做的是建立模型之间的关系,或者从另一个继承。鉴于您的情况,您也许可以从清单继承预订:
你会得到这样的东西:
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
我的任务是为假设的公寓预订应用程序创建 Django 模型。
我的问题是:我可以使用我定义的模型作为另一个模型中的字段吗?
例如,我将有一个名为 "Listing" 的模型,代表正在列出的公寓。
class Listing(models.Model):
address = models.IntegerField()
owner = models.CharField(max_length=256)
duration = models.DurationField()
price= models.IntegerField()
我还想要一个 "Booking" 模型来代表有人预订的公寓。它将具有与列表完全相同的信息,并添加了预订者的用户名。那么我可以让我的 Booking 模型使用 Listing 作为字段吗?然后为预订者的用户名添加一个额外的字段。
非常感谢任何其他 tips/critiques,因为我是 Django 的完全初学者。
我不是 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 字段。
模型作为字段的概念很奇怪。您可以做的是建立模型之间的关系,或者从另一个继承。鉴于您的情况,您也许可以从清单继承预订:
你会得到这样的东西:
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