【发布时间】:2016-05-27 12:41:21
【问题描述】:
在对那里的表生成 orm 查询时遇到了一个问题。
我这里有模型:
class Task(models.Model):
deliver = models.ForeignKey(settings.AUTH_USER_MODEL, blank=False, related_name='task')
tasktype = models.PositiveSmallIntegerField(db_index=True)
description = models.CharField(max_length=500, null=True, blank=True)
delivertime = models.DateTimeField(default=now,db_index=True)
deadlinetime = models.DateTimeField(null=True,db_index=True)
relatedresourceid = models.PositiveIntegerField(null=True)
suggestspendtime = models.PositiveIntegerField(null=True)
subjectid = models.PositiveIntegerField(null=True)
class Lesson(models.Model):
name = models.CharField(max_length=200,null=True,blank=True)
class Exam(models.Model):
name = models.CharField(max_length=200,null=True,blank=True)
所以,这里我想从任务模型中查询,更重要的是,对于查询集中的每个任务对象:
我想从课程或考试模型中获取一个带有键“名称”的值,即对于每个任务对象,如果任务类型为 1,则从课程模型(其中 pk==relatedresourceid)获取名称值,如果任务类型为 2,则从考试模型中获取。
我使用 Django1.8 和 Mysql 5.6
有人知道如何使用 ORM 进行查询吗?
谢谢。
【问题讨论】:
-
每个任务属于课程还是考试?我的意思是,在你试图解决的现实问题中。
-
是的,每个任务都属于课程或考试。如果 tasktype 为 1 ,则为课程, 2 为考试。并通过 relatedresourceid 获取课程或考试对象
-
那你应该用另一种方式来模拟这种情况,下面是我的回应
-
是的,我知道我们可以使用 ForeignKey 或其他约束,但是,由于某些特殊原因,我们没有使用。也许我们可以用原始 sql 来做到这一点,但我不想因为以后有数据库引擎传输。其实我也不知道怎么写原始的sql……哈哈
-
我知道
tasktype告诉您需要查看的表格,但是,您必须参加考试/课程表格中的哪个name?