【发布时间】:2021-12-27 04:02:44
【问题描述】:
我正在开发一个消息传递应用程序。 型号如下。
class ChatRoom(SafeDeleteModel):
_safedelete_policy = SOFT_DELETE_CASCADE
room_name = models.CharField(max_length=100, null=True, blank=True)
participants = models.ManyToManyField(User)
class Meta:
db_table = TABLE_PREFIX + "chat_room"
class Message(SafeDeleteModel):
_safedelete_policy = SOFT_DELETE_CASCADE
chat_room = models.ForeignKey(ChatRoom, on_delete=models.CASCADE)
message = models.TextField()
sent_by = models.ForeignKey(User, on_delete=models.CASCADE)
created_on = models.DateTimeField(default=django.utils.timezone.now)
class Meta:
db_table = TABLE_PREFIX + "chat_message"
我必须过滤包含用户列表的 ChatRoom 对象。
例如:向 api 发送这样的数据
{
"participants": [2,3]
}
它应该返回一个包含用户“2”和用户“3”作为参与者的 ChatRoom 对象。
我曾尝试使用过滤它
room = ChatRoom.objects.filter(participants__in=serializer.validated_data['participants'])
但它会返回包含用户“1”和用户“2”的房间对象列表。
我也尝试过使用 get() 但它返回错误。
我做错了什么,我该如何做对?
感谢您调查我的问题。希望你有解决办法。
【问题讨论】:
标签: django django-models django-rest-framework django-views django-forms