您好我有以下课程
Class Test1(models.Model):
user = models.OneToOneField(User)
myotherid = models.CharField(max_length=255)
Class TestData(models.Model):
data = models.ForeignKey(Data)
test1 = models.ForeignKey(Test1)
Class Data(models.Model):
title = models.CharField(max_length=255)
我是Django模型的新手,所有这一切,如何获得myotherid = 1234和Data.title =“foo”的所有Test1项目
基本上,做这个SQL:
select Test1.* from Test1 t, TestData td, Data d where t.myotherid=1234 and t.id = td.test1 and td.data = d.id and d.title = "foo"
感谢您的帮助
答案 0 :(得分:0)
TestData
类是多余的,因为它只是定义一个ManyToMany关系,你可以使用ManyToManyField
直接在Django中做 - 中间类仍然存在,但没有明确定义。如果您需要存储关系本身的额外信息,则只需要定义它。
因此,假设您已将datas = ManyToManyField('Data')
添加到Test1
课程中,您可以执行以下操作:
Test1.objects.filter(myotherid=1234, datas__title='foo')
答案 1 :(得分:0)
我同意Daniel的观点,您可能希望使用ManyToManyField
。
回答你的问题,这里是你提供的模型的Django代码:
Test1.objects.filter(myotherid=1234, testdata__data__title='foo')