我有模型Foo有字段栏.bar字段应该是唯一的,但允许空值,这意味着如果bar字段是null
,我想允许多个记录,但如果不是,null
则值必须是唯一的.
这是我的模型:
class Foo(models.Model):
name = models.CharField(max_length=40)
bar = models.CharField(max_length=40, unique=True, blank=True, null=True, default=None)
Run Code Online (Sandbox Code Playgroud)
这是表的相应SQL:
CREATE TABLE appl_foo
(
id serial NOT NULL,
"name" character varying(40) NOT NULL,
bar character varying(40),
CONSTRAINT appl_foo_pkey PRIMARY KEY (id),
CONSTRAINT appl_foo_bar_key UNIQUE (bar)
)
Run Code Online (Sandbox Code Playgroud)
当使用管理界面创建多个bar为空的foo对象时,它会给出一个错误:"Foo with this Bar已经存在."
但是当我插入数据库(PostgreSQL)时:
insert into appl_foo ("name", bar) values ('test1', null)
insert into appl_foo ("name", bar) values ('test2', null)
Run Code Online (Sandbox Code Playgroud)
这很好用,它允许我插入超过1条记录,条形为空,所以数据库允许我做我想要的,这只是Django模型的错误.有任何想法吗?
编辑
就DB而言,解决方案的可移植性不是问题,我们对Postgres感到满意.我已经尝试设置一个可调用的唯一,这是我的函数返回True/False为特定的bar值,它没有给出任何错误,但是如果它没有任何影响那么缝合.
到目前为止,我已经从bar属性中删除了唯一的说明符并处理了应用程序中的bar唯一性,但仍然在寻找更优雅的解决方案.有什么建议?
使用Python2.7版本.以下是我的示例代码.
import StringIO
import sys
buff = StringIO.StringIO()
buff.write("hello")
print buff.read()
Run Code Online (Sandbox Code Playgroud)
在上面的程序中,read()不返回任何内容,因为getvalue()返回"hello".任何人都可以帮我解决问题吗?我需要read(),因为我的以下代码涉及读取"n"字节.
有没有一种简单的方法或集成函数来找出浮点数的小数位?
该数字是从字符串中解析出来的,因此一种方法是计算'.'后面的数字.标志,但这对我来说看起来很笨拙.是否有可能从一个float
或一个Decimal
对象中获取所需的信息?
解决方案(其中之一,当然:))
我选择使用python decimal.Decimal类来帮助解决我的问题:
e = abs(Decimal(string_value).as_tuple().exponent)
Run Code Online (Sandbox Code Playgroud)
注意:这仅适用于构造Decimal的参数是字符串而不是float(这会导致浮点不准确).
非常感谢所有其他贡献.
更新赏金
如果可能的话,我想要一个不涉及监控线程的解决方案.
我知道我可以使用我的应用程序类查看计划和活动任务.Inspect
Control
i = myapp.control.inspect()
currently_running = i.active()
scheduled = i.scheduled()
Run Code Online (Sandbox Code Playgroud)
但我找不到任何功能来显示已经完成的任务.我知道这些信息至少可以暂时访问,因为我可以通过以下方式查找已完成的任务task_id
:
>>> r = my task.AsyncResult(task_id=' ... ')
>>> r.state
u'SUCCESS'
Run Code Online (Sandbox Code Playgroud)
如何获得计划,活动和已完成任务的完整列表?或者可能一次列出所有任务?
在我的Django项目中,我依赖于第三方应用程序,该应用程序使用已知模式在各种目录中生成SQLite缓存文件.
我想使用Django模型访问这些数据库,但显然我不能使用静态DATABASES
设置.
如何在任意路径上动态打开SQLite数据库?
编辑
正如Byron Ruth指出的那样,解决方案是将它django.db.connections
与using
QuerySet中的函数结合使用.
如何(int) { 1 }
在C中调用构造?一个猜测是"匿名常数",但这对谷歌没有任何帮助.作为旁注,您可以使用此构造告诉ioctl您要使用值为1的变量:ioctl (..., &(int) { 1 })
.
给出以下(演示)项目布局:
MyProject/
README
LICENSE
setup.py
myproject/
... # packages
extrastuff/
... # some extra data
Run Code Online (Sandbox Code Playgroud)
我如何(以及在何处)声明不同的分布类型?特别是我需要这两个选项:
仅包含源的分发
包含源和所有数据文件的分发(extrastuff)
理想情况下,如何声明上面两个配置,而第二个配置取决于第一个配置?
我正在编写一个通用函数包装器,它可以将任何函数包装到具有该形式的lua样式调用中
int lua_function(lua_State*L)
我希望包装函数是即时生成的,所以我想将函数作为模板参数传递.如果你知道参数的数量(例如2),这是微不足道的:
template <typename R, typename Arg1, typename Arg2, R F(Arg1, Args)>
struct wrapper
Run Code Online (Sandbox Code Playgroud)
但是,我不知道这个数字,所以我请求variadic模板参数求助
// This won't work
template <typename R, typename... Args, R F(Args...)>
struct wrapper
Run Code Online (Sandbox Code Playgroud)
上面的内容不会编译,因为variadic参数必须是最后一个.所以我使用两个级别的模板,外部模板捕获类型,内部模板捕获函数:
template <typename R, typename... Args>
struct func_type<R(Args...)>
{
// Inner function wrapper take the function pointer as a template argument
template <R F(Args...)>
struct func
{
static int call( lua_State *L )
{
// extract arguments from L
F(/*arguments*/);
return 1;
}
};
};
Run Code Online (Sandbox Code Playgroud)
这是有效的,除了包装像这样的函数
double sin(double d) {} …
Run Code Online (Sandbox Code Playgroud) 我是vim的新手,我从这里安装了一个名为Taglist的插件
当我重新启动我的vim时,会发生错误:
Taglist:在PATH中找不到令人兴奋的ctags(http://ctags.sf.net).插件未加载.
怎么解决这个?
Python
当我有一个命令行应用程序采用一个参数时,标准做法是什么
网页的URL
要么
磁盘上某处的HTML文件的路径
(只有一个)
代码足够了吗?
if "http://" in sys.argv[1]:
print "URL"
else:
print "path to file"
Run Code Online (Sandbox Code Playgroud)