Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在django中外键关系的另一端嵌入筛选器_Python_Django_Django Models - Fatal编程技术网

Python 如何在django中外键关系的另一端嵌入筛选器

Python 如何在django中外键关系的另一端嵌入筛选器,python,django,django-models,Python,Django,Django Models,我的结构如下: class Room(models.Model): doors: BaseManager class Door(models.Model): deleted = models.BooleanField(default=False) room = models.ForeignKey(to=Room, related_name='doors' ) 现在,在我保存了一个房间并保存了一些引用该房间的门之后,我可以加载一个房间并获取房间中的所有门

我的结构如下:

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()时,我实际上只希望接收那些未被删除(已删除为false)的门

你会如何处理django

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


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

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

STATUS_CHOICES = (
        ('deleted', 'deleted'),
        ('not_deleted', 'not_deleted'),
    )
然后,将
已删除的
模型字段编辑为:

deleted = models.CharField(max_length=1o,choices=STATUS_CHOICES)
然后,您可以通过以下方式访问未删除的门:

Door.not_deleted.all()

而不是调用all()方法。调用filter方法:room.doors.filter(deleted=False)是的,我知道我可以这样做-我不想那样做。我不想让用户知道他们需要关心删除。我希望他们只做一个room.doors.all()也许我不明白你想要什么,但是room.doors.all().filter(deleted=False)=room.doors.filter(deleted=False)。对于room.doors.filter(deleted=False)中的门,应该只为该房间提供未删除的门。