首页 > 解决方案 > 如何在django中的外键关系的另一端嵌入过滤器

问题描述

我有以下结构:

class Room(models.Model):
    doors: BaseManager

class Door(models.Model):
    deleted = models.BooleanField(default=False)
    room = models.ForeignKey(to=Room, related_name='doors'
)        

现在,在我保存了一个房间并保存了一些引用该房间的门之后,我可以加载一个房间并获取房间中的所有门......

但是,当我执行 room.doors.all() 时,我实际上只想接收那些未删除的门(已删除为假的门)。

你会如何用 django 做到这一点?

更新:对不起,我不太清楚我想要什么......

我想要这种行为:一旦我有一个房间的实例,我就去用 room.doors.all() 获取链接到那个房间的门——此时我只想要没有被删除的门。

标签: pythondjangodjango-models

解决方案


Door首先在您的模型中添加这一行:

STATUS_CHOICES = (
        ('deleted', 'deleted'),
        ('not_deleted', 'not_deleted'),
    )

然后,将您的deleted模型字段编辑为:

deleted = models.CharField(max_length=1o,choices=STATUS_CHOICES)

然后,您可以使用以下命令访问未删除的门:

Door.not_deleted.all()

推荐阅读