【问题标题】:Many to many reverse relationship Django多对多反向关系Django
【发布时间】:2014-03-07 21:39:07
【问题描述】:

我正在尝试编写一个简单的消息系统。

基本上我有一个用户表和一个消息表。

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。

完成此任务的最佳方法是什么?

【问题讨论】:

标签: python sql django database-administration


【解决方案1】:

您不应该定义双方的关系。选择一个 - 可能是消息 - 并在那里定义它。 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() 的消息的用户。

【讨论】:

    猜你喜欢
    • 2019-05-18
    • 1970-01-01
    • 1970-01-01
    • 2021-01-06
    • 1970-01-01
    • 2016-09-15
    • 1970-01-01
    • 2013-06-12
    • 2016-08-18
    相关资源
    最近更新 更多