使用以下型号设置:
class Cat(models.Model):
claw = models.CharField(max_length=20)
name = models.CharField(max_length=20)
class Fur(models.Model):
type = models.CharField(max_length=20)
cat = models.ForeignKey(Cat)
class Meta:
db_table=u'cat_view'
managed=False
Fur拥有Cat的外键。 CatView是Cat的子集视图,可以手动管理。有没有办法在这个设置中使用django有用的反向集方法?
另外,我可以使用Fur.objects.filter(cat_id = cat_view.id,...),它与cat_view.fur_set.filter(...)具有相同的功能,但我无法进行反向查找例如CatView.objects.filter(fur__type =“shaggy”)。
编辑: 添加了示例模型文件,为了清晰起见更改了图像,增加了较小的复杂性。
答案 0 :(得分:1)
首先,您提供的ORM调用都不起作用:fur_set
是cat
实例的属性,而不是Cat.objects
经理的属性。
其次,Django对所有的数据库视图没有特定的支持,所以你在视图中使用这一特定功能的问题有点奇怪。您可以将CatView定义为单独的(非托管)模型,尽管您需要注意更新和保存。然后,通过直接查询Fur
对象,可以获得与反向关系相同的效果:
Fur.objects.filter(cat=my_cat_view.id)