【发布时间】:2014-02-19 20:25:31
【问题描述】:
我正在开发拼车应用程序。我需要帮助设计私人消息的模型。
我设计了以下模型,在视图中查询它们看起来很复杂。你们能指定一个更好更简单的吗?
class Ride(models.Model):
type = models.BooleanField(default=False)
add_source = models.ForeignKey(Address, related_name='source')
add_destination = models.ForeignKey(Address, related_name='destination')
ride_startDateTime = models.DateTimeField(default= datetime.datetime.now, blank=True)
ride_startPref = models.CharField(max_length=10, choices=CHOICES, default='None')
class Conversation(models.Model):
ride_id = models.ForeignKey(Ride)
class Messages(models.Model):
conversation_id = models.ForeignKey(Conversation)
ride_id = models.ForeignKey(Ride)
sender_id = models.ForeignKey(User, related_name='sender')
receiver_id = models.ForeignKey(User, related_name='receiver')
Content = models.TextField(max_length=1000,blank=True)
timestamp = models.DateTimeField(default= datetime.datetime.now, blank=True)
status = models.CharField(max_length=10,blank=True)
用户模型是 django 内置的。 请考虑以下用例:
1) 对话必须与骑行相结合, 例如:用户 X 是乘车 3 的车主,用户 Y 可以联系 X 获取此乘车(3),然后将生成新的对话 id(77)。之后,他们之间发送的任何消息都应该在相同的会话 id(77) 下。 如果另一个用户 Z 试图联系用户 X 以获得相同的乘车 3,则必须生成一个新的会话 ID(33)。
2) 如果用户 X 有另一个叫 4 的乘车,那么如果用户 Y 通过其他乘车方式联系用户 X,它必须生成新的对话 id(99),并且他们之间在乘车上发送的所有消息都应该属于相同的对话 id(99)。
【问题讨论】:
标签: python django database-design django-models database-schema