是否可以从名称中获取ORM映射的模型类?
绝对是SQLAlchemy在某处内置了这个功能.例如,在声明式样式中,您可以编写类似的东西blahs = relationship('Blah')(注意:不需要模块前缀).我试着看里面,sqlalchemy.orm.properties.RelationshipProperty但无法弄清楚什么时候argument字符串被实际的东西取代.
我想写一些像这样的代码:
class SomeModel(models.Model):
field = models.ForeignKey(SomeOtherModel)
def __init__(self, *args, **kwargs):
super(SomeModel, self).__init__(*args, **kwargs)
if self.field is None:
self.field = SomeOtherModel()
...
Run Code Online (Sandbox Code Playgroud)
然而,这提高了self.field.rel.to.DoesNotExist.Django代码非常明确:
class ReverseSingleRelatedObjectDescriptor(object):
def __get__(self, instance, instance_type=None):
...
if val is None:
# If NULL is an allowed value, return it.
if self.field.null:
return None
raise self.field.rel.to.DoesNotExist
Run Code Online (Sandbox Code Playgroud)
我几乎可以肯定这个问题之前已经提出过,但不知怎的,我无法找到任何与该特定用例匹配的东西.一个明显的解决方法当然是使字段可以为空,但据我所知,实际上会对数据库模式产生影响,我也喜欢Django提供的完整性检查.另一个是捕获异常并适当处理它.然而,这增加了许多样板代码.特别是当有多个像这样的字段时(try...except每个字段都有一个单独的块 - 现在这很难看).你会建议什么?
编辑:另一件事 - 我可以使用initial但是当涉及到外键时这是非常有限的.我并不总是知道在创作时我想要的默认类型.但是我会在初始化阶段知道它.而且,它可能依赖于其他字段的值.
我正在为Django项目编写一组REST服务.我一直在使用django-rest-framework.由于其功能有限,我不得不切换到我非常喜欢的django-piston.
但是,django-rest-framework有一个非常好的功能 - 它能够显示一个类似管理员的界面,用于从浏览器测试创建的服务.这对于调试来说非常棒.它非常简单:为每个HTTP方法显示一个表单,如"GET","POST"等.还有一个可用内容类型的下拉列表和一个用于输入要发送的数据的文本字段.
在我看来,这并不是一个与特定REST框架直接相关的功能.它甚至不一定是Django.只需使用HTML + JS或外部网站即可实现.
我的问题是:您如何使用手动测试/调试Web服务?你能指点一些HTML代码片段或一个可以做上述事情的Django应用程序吗?
假设模型X有一个字段n(一个整数)。现在我还有一个Y包含字段n和m(整数)的模型。是否有可能使用 Django ORM 来选择x(model X) 使得存在y(model Y)x.n = y.n并且y.m = m对于给定的值m?
请不要建议我介绍ForeignKey两个模型之间的关系或类似的东西。我想特别知道是否可以在不修改模型的情况下实现这一点。在我正在处理的确切情况下,给定的关系是通用的。通用关系的另一面可以是任何东西,所以根据文档,我不能GenericRelation在不同的模型中多次引入。
我正在寻找一个解释性的视频/写作,它将呈现EmberJS应用程序的不同组件/模式.我熟悉几种MVC架构,但这种设计模式非常灵活.例如,不同的框架似乎对控制器的理解不同.似乎还有Ember特有的东西,比如路由器和路由.
这些幻灯片http://www.lukemelia.com/devblog/archives/2012/08/23/architecting-ember-js-apps/似乎或多或少都是我想要的.不幸的是,我无法找到与他们一起工作的视频.
在EmberJS网站上发布的材料似乎遵循教程格式.这根本不是我想要的.我不想学习如何立即构建东西,而是首先要了解一般架构,以便知道应该在哪里放置代码.
我在哪里可以找到neo4j-backupUbuntu上的工具?我使用标准apt-get安装安装了Neo4j ,但脚本无处可寻.从我所看到的ps aux,Neo4j在2.1.5版本中(我无法看到如何以更简单的方式检查版本).
现在这将是一个有点奇怪的用例.也许有人有一些想法.
背景
我正在写一个非常强大的AJAX网站.实际上几乎没有任何整页重新加载.这意味着在客户端进行了大量的模板组合.目前我在jQuery中使用了一些自编写的脚本.为了使事情变得相当简单,我只使用变量占位符,如下所示:{{ somevar.someattr.someotherattr }}.我可能会使用像胡子这样的东西来实现类似的行为.
另一方面,我不时希望能够在服务器端进行一些组合.我正在寻找一种方法来避免客户端和服务器端的无意义代码重复.
理念
我希望能够以这样的方式呈现Django模板,输出中的某些间隙将保持不变.更具体地说,如果模板渲染上下文中未提供给定变量,则占位符仍应读取{{ contents }}.我想知道使用过滤器和/或标签是否可以实现这种或类似的行为.
我可以写{{ somevar.someattr|default:"{{ somevar.someattr }}" }},但这不是很干.
django ×4
python ×4
django-orm ×2
architecture ×1
backup ×1
dry ×1
ember.js ×1
javascript ×1
join ×1
neo4j ×1
null ×1
orm ×1
reflection ×1
rest ×1
sqlalchemy ×1
templates ×1
testing ×1
web-services ×1