我正在尝试编写一个简单的消息系统。
基本上我有一个User表和一个Message表。
class User(models.Model):
user = models.OneToOneField(User)# inherit djangos default user properties
messages = models.ManyToManyField(Message)
class Message(models.Model):
date = models.DateField()
text = models.CharField(max_length=255)
user = models.ManyToManyField(User)
我希望能够为尽可能多的消息添加尽可能多的用户。
我希望能够说出messages.users和users.messages。
实现这一目标的最佳方法是什么?
答案 0 :(得分:3)
您不应该在双方都定义关系。选择一个 - 可能是消息 - 并在那里定义它。 Django自动提供反向关系。
此外,您不需要单独的User类,尤其是如果M2M字段在消息本身上。所以,你可以这样做:
class Message(models.Model):
date = models.DateField()
text = models.CharField(max_length=255)
users = models.ManyToManyField('auth.User')
现在,您可以为my_user.message_set.all()
的用户和my_messages.users.all()
消息的用户访问消息。