在Django关系中来回

2024-10-03 17:24:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我在django模型之间有以下关系

class Customer(models.Model):
    #fields

class Tooth(models.Model):
    #fields
    customer = models.ForeignKey(Customer)

class Peri(models.Model):
    #fields
    customer = models.ForeignKey(Customer)

class PeriTask(models.Model):
    #fields
    tooth = models.ForeignKey(Tooth, related_name="peritasks")
    peri = models.ForeignKey(Peri, related_name="peritasks")

我似乎不能理解相反的关系。我的意思是我可以得到所有特定牙齿的一部分`牙。牙。全部(). 但是给定一个特定的Peri实例,我如何过滤属于Peri的牙齿呢?有点像(我知道这不对)

Tooth.objects.filter(peritask__peri=peri) #this won't work I know just as an example to show what I mean   

Tags: namefieldsmodel关系modelscustomerclassrelated
1条回答
网友
1楼 · 发布于 2024-10-03 17:24:46

实际上,通过PeriTask模型,在PeriTooth之间有一个多对多的关系。最简单的方法是显式地声明此关系(在ToothPeri中),以便orm了解它并将适当的描述符添加到模型中,cfhttps://docs.djangoproject.com/en/1.7/topics/db/models/#intermediary-manytomany

class Tooth(models.Model):
    #fields
    customer = models.ForeignKey(Customer)
    peris = models.ManyToManyField("Peri", through="PeriTask")

然后您就可以访问给定的periperi.tooth.all()相关的theeth。你知道吗

相关问题 更多 >