我有两个模型,Data
,其中包含某些数据的不同版本,以及Master
,其跟踪所有版本,以及一个current_version。
像这样:
class Master(models.Model):
current_version = models.OneToOneField('Object', related_name='+')
class Data(models.Model):
master = models.ForeignKey('Master', related_name='data')
我想获取Data
的所有current_version
实例。如:
Data.objects.filter(Q(master__current_version = ???))
如何构造这样的过滤器?
答案 0 :(得分:0)
如果为current_version
提供一个相关名称(不同于'+'
),例如:
class Master(models.Model):
current_version = models.OneToOneField(
'Data',
related_name='current_version_master'
)
class Data(models.Model):
master = models.ForeignKey('Master', related_name='data')
您可以使用以下方法进行过滤:
Data.objects.filter(current_version_master__inull=False)
因此,您在此处检查关系“反向”是否找到了Master
对象,如果找到了,我们将Data
对象保留在查询集中。