我是django世界的新手,我正试图在django上运行sql查询。 任何关于如何在django中写下等效查询的线索都非常感激。
型号:
class UserTraining(models.Model):
Training = models.CharField(max_length = 100,unique=True)
Category = models.CharField(max_length = 100)
Due_date = models.DateField(default=None)
def __str__ (self):
return self.Training + " " + self.Category
class UserSummary(models.Model):
Users = models.ForeignKey(settings.AUTH_USER_MODEL)
Status = models.CharField(max_length = 100)
Duedate = models.DateField(default=None)
CompletedDate = models.DateField(default=None)
Hours = models.IntegerField(default=0)
Trainings = models.ForeignKey(UserTraining,to_field='Training',blank=False,null=True)
def __str__(self):
return self.Status
class UserProfile(models.Model):
user = models.OneToOneField(User)
user_category = models.CharField(max_length = 100, blank=True, null=True)
mobile = models.CharField(max_length=256, blank=True, null=True)
DOJ = models.DateField(default=None)
def __str__(self):
return self.user.first_name + " " + self.user_category
使用sql查询:
Select UT. Training , ifnull (US.Status ,'Pending')
from SkillTracker_usertraining UT
Left outer join SkillTracker_usersummary US
On US.Trainings_id=UT.Training and Us.Users_id='4'
where UT.Category='EMEIA'
在django上面写sql查询需要帮助。
我的目标背后是如果他尚未参加培训,则可以获得所有类别的用户培训状态,并将其显示为待处理状态。
答案 0 :(得分:0)
试一试:
UserTraining.objects.filter(
usersummary__Users__id=4
).values('Training', 'usersummary__Status')
其中usersummary
是UserSummary
模型类名称的小写,并且我不添加ifnull
,因为您的状态不是空字段。双下划线用于相关对象或特殊条件,如__gt
或__in
等。
请阅读django coding-style,您的代码对其他开发者不利