我有两个松散定义的模型:
class InformationUnit(models.Model):
username = models.CharField(max_length=255)
project = models.ForeignKey('Project')
...
class Project(models.Model):
name = models.CharField(max_length=255)
Run Code Online (Sandbox Code Playgroud)
现在,在视图中,我想注释属于项目的所有InformationUnits,所以我这样做:
p = Project.objects.all().annotate(Count('informationunit')
Run Code Online (Sandbox Code Playgroud)
工作得很好另外,我想知道,在每个项目中,有多少不同的"用户名"参与.也就是说,计算组成一个项目的InformationUnits中有多少个不同的"用户名".我尝试了以下方法,但它只计算InformationUnit的数量,无论用户名如何:
p = Project.objects.all().annotate(Count('informationunit__username')
Run Code Online (Sandbox Code Playgroud)
请注意,username不是对象,而是字符串.有没有一个干净的方法来做到这一点,或者我应该基于循环和意大利面条代码创建一个更复杂的代码:P
非常感谢!
我很坚持这个!我正在编写一个从外部数据库读取数据的Django视图.为此,我使用标准的MySQLdb库.现在,要加载数据,我必须做一个非常漫长而复杂的查询.我可以在我的视图中对该查询进行硬编码,并且可以正常工作.但我认为这不切实际; 我希望以后能够更改查询,所以我尝试从文本文件加载语句.我的问题是我不知道在哪里存储以及如何打开该文件.无论我在哪里,我都会收到"没有这样的文件或目录"错误.即使将其保存在与视图代码相同的目录中也会失败.
请注意,这不是上传的文件; 它只是一个完成我的代码的外部文件.有任何想法吗?提前致谢!
我正在关注http://docs.sqlalchemy.org/en/rel_0_9/orm/tutorial.html中的sqlalchemy教程
然而,我使用的是MySQL,而不是使用SQLite后端.问题是,当我尝试执行文字MySQL语句来从users表中选择一列时,例如
SELECT name from users;
Run Code Online (Sandbox Code Playgroud)
它会失败
NoSuchColumnError: "Could not locate column in row for column 'users.id'"
Run Code Online (Sandbox Code Playgroud)
而做一个
SELECT * FROM users
Run Code Online (Sandbox Code Playgroud)
会工作得很好.我错过了什么吗?
Users类定义为:
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String(50))
fullname = Column(String(50))
password = Column(String(50))
def __repr__(self):
return "<User(name='%s', fullname='%s', password='%s')>" % (self.name, self.fullname, self.password)
Run Code Online (Sandbox Code Playgroud)
会话定义为:
Session = sessionmaker(bind=engine)
session = Session()
Run Code Online (Sandbox Code Playgroud)
而我正在努力做到
session.query(Users).from_statement('SELECT name from users')
Run Code Online (Sandbox Code Playgroud)
顺便说一句,这个语句在MySQL客户端上运行时工作正常.我错过了什么或者它是一个错误?