【发布时间】:2015-07-05 14:03:29
【问题描述】:
我在 django 工作,正在为用户规划一个游乐设施数据库。
每个用户可以在多个游乐设施上(随着时间的推移),每个游乐设施可以有多个用户(乘客)在里面。
此外,对于每个 Ride,必须只有一个 Driver(也是 User),所以我认为我在Rides 和 Users 表,用于显示 user 在什么 ride 上,以及 Rides 的 Driver_id 和 User_id 之间的一对多关系。对吗?
我的问题是-
我在 django 文档中看到我应该在 One 模型中放置一个多对多字段。哪一个有关系吗?还有,它是否会创建一个新表,比如rides_users?
还有,使用 foreignKey 字段和 OneToManyField 有什么区别(一对多关系) > 领域?
编辑:
目前,有我的模型:
def get_image_path(models.Model):
return os.path.join('photos',str(instance.id),filename)
class UserProfile(models.Model):
user=models.OneToOneField(User)
phone_number=models.CharField(max_length=12)
profile_picture=models.ImageField(upload_to=get_image_path, black=True, null=True)
class Ride(models.Model):
driver=models.ForeignKey(UserProfile, related_name="r_driver")
destination=models.ForeignKey(Destination, related_name="r_final_destination")
leaving_time=models.DateTimeField()
num_of_spots=models.IntergerField()
passengers=models.ManyToMany(UserProfile, related_name="r_passengers")
mid_destinations=models.ManyToMany(Destination, related_name="r_mid_destinations")
class Destination(models.Model):
name=models.CharField(max_length=30)
如您所见,每个行程都有 多个 mid_destination 和 多个 乘客。 a Ride也有一个司机和一个最终目的地。
问题是 - 当 用户 添加 Ride 时,我想要 司机,目的地 和 mid_destinations 以及由 用户 设置的其余字段(司机是添加乘车的用户),除外 对于 passengers 字段。我希望其他用户将自己添加到游乐设施中,因此在创建游乐设施时,用户(司机)不必设置乘客。
我该怎么做?还有,关于模型的任何其他建议?
【问题讨论】:
标签: django database many-to-many many-to-one