【发布时间】:2017-03-26 05:13:35
【问题描述】:
我使用这样的 SQL 查询:
SELECT ns.id, ns.title, ns.image,
ns.briefDescr as description, ns.url,
um.team_id as team
FROM app_news ns
INNER JOIN app_news_teams nsts
ON ns.id = nsts.news_id
INNER JOIN app_userteam um
ON nsts.team_id = um.team_id
WHERE um.user_id = %s AND ns.isActive = 1 GROUP BY ns.id
ORDER BY ns.id DESC
但我需要为“图像”字段添加更多逻辑,我决定在模型中使用装饰器@property:
@property
def image(self):
'''some logic here'''
return self._image
但是现在 sql 代码不起作用。我还尝试添加注释以添加“um.team_id 作为团队”。您能否给我一些想法,我可以使用@property 并保存 sql 响应的当前结构(id、title、image、url、description 和 team)吗?
编辑: 1)我在视图中运行查询作为原始查询。
articles = News.objects.raw(sql, [sid, ])
结果我想执行 sql 查询或 orm 查询并保存当前的响应结构,但使用函数字段 'image'
2)当我运行这个 sql 时出现异常“ns.image”不存在
# model before
class News(models.Model):
"""other fields """
image = models.ImageField(upload_to='images/news', blank=True)
# model now
class News(models.Model):
"""other fields """
_image = models.ImageField(upload_to='images/news', blank=True)
@property
def image(self):
"""some logic here"""
return self._image
【问题讨论】:
-
您的问题含糊不清。您的 sql 查询在哪里执行?为什么添加
@property会影响查询?除非你指出这一点,否则它们对我来说只是两个完全不同的东西。 -
我在问题中添加了更多细节。
标签: sql django python-2.7 django-models