我阅读了ForeignKey的文档,并说外键给出了多对一的关系。
我举了这个例子说每个ChatRoom可以有多条消息:
class Message(models.Model):
message=models.CharField(max_length=30)
class ChatRoom(models.Model):
message=models.ForeignKey(Message)
这段代码能实现吗?如果没有,我想正确答案应该是这个
class ChatRoom(models.Model):
room_name=models.CharField(max_length=30)
class Message(models.Model):
message=models.CharField(max_length=30)
room=models.ForeignKey(ChatRoom)
在任何情况下,我如何在ChatRoom中显示所有消息?
答案 0 :(得分:2)
这是适合您目的的正确模型声明(第二个):
class ChatRoom(models.Model):
room_name=models.CharField(max_length=30)
class Message(models.Model):
message=models.CharField(max_length=30)
room=models.ForeignKey(ChatRoom)
这意味着有更多的消息(很多)与单个聊天室(一个)相关。
要显示所有消息,请执行以下操作:
messages = chat_room.message_set.values('message')
其中chat_room是ChatRoom
模型
或者,您可以创建相关名称:
class Message(models.Model):
message=models.CharField(max_length=30)
room=models.ForeignKey(ChatRoom, related_name='messages')
然后,做
messages = chat_room.messages.values('message')
实际接收所有消息,或
messages = chat_room.messages.all()
获取所有对象(不仅仅是消息)
答案 1 :(得分:1)
class ChatRoom(models.Model):
room_name=models.CharField(max_length=30)
class Message(models.Model):
message=models.CharField(max_length=30)
room=models.ForeignKey(ChatRoom)
用于显示聊天室的所有消息:
chatroomobject.message_set.all() in backend views/scripts
chatroomobject.message_set.all in templates
这里:
chatroomobject is the instance object of the ChatRoom Model