0

嗨,我有以下课程

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"

谢谢你的帮助

4

2 回答 2

0

这个TestData类是多余的,因为它只是用来定义一个 ManyToMany 关系,你可以直接在 Django 中使用 a ManyToManyField- 中间类仍然存在,但没有明确定义。如果您需要存储关系本身的额外信息,您只需要定义它。

所以假设你已经添加datas = ManyToManyField('Data')到你的Test1类中,你可以简单地这样做:

Test1.objects.filter(myotherid=1234, datas__title='foo')
于 2012-04-22T18:55:14.747 回答
0

我同意 Daniel 的观点,您可能想考虑使用ManyToManyField.

不过,要回答您的问题,以下是您提供的模型的 Django 代码:

Test1.objects.filter(myotherid=1234, testdata__data__title='foo')
于 2012-04-22T21:32:04.750 回答