Django模型:检索数据

时间:2012-04-22 18:48:00

标签: django django-models

您好我有以下课程

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"

感谢您的帮助

2 个答案:

答案 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')