我想获取具有 2 个特定标签“tag1” AND“tag2”的所有图像。我的简化模型:
class Image(models.Model):
title = models.CharField(max_length=100)
class Tag(models.Model):
name = models.CharField(max_length=64, unique=True)
images = models.ManyToManyField(Image, null=True, blank=True)
Run Code Online (Sandbox Code Playgroud)
连接filter作品:
query = Image.objects.filter(tag__name='tag1').filter(tag__name='tag2')
Run Code Online (Sandbox Code Playgroud)
然而,我认为我可以使用 Django 中的 Q 对象来做到这一点。我正在构建一个复杂的查询,因此使用 Q 会更简单。我将所有参数添加到qobj = Q()using qobj.add(Q(tag__name='tag1'), Q.AND)。但是...以下内容什么也检索不到:
qobj = Q()
qobj.add(Q(tag__name='tag1'), Q.AND)
qobj.add(Q(tag__name='tag2'), Q.AND)
query = Image.objects.filter(qobj)
Run Code Online (Sandbox Code Playgroud)
OR在上面的代码中使用连接器时,一切都按预期工作,正确返回具有 tag1 ORtag2 的图像。
似乎在这种AND情况下,它正在寻找 app_tag_images 中具有两个标签的行,这显然不存在,因为每一行只有一个 image_id 的 tag_id 。
有没有办法用 Q 构建这个查询?
ps:如果需要更多代码细节,请告诉我。
编辑:
这是带有 Q 的查询的 que sql 查询(SELECT为了清楚起见,我清理了大部分列):
SELECT …Run Code Online (Sandbox Code Playgroud) 好吧,在我的网站上,我有嵌套的div.使用我的代码,我将它们移动如下:
float:left;
position:relative;
top: 5em;
left: -4em;
margin-left: auto;
margin-right: auto;
Run Code Online (Sandbox Code Playgroud)
因此,当网站加载时,一切都在正确的位置.但是,其他内容仍然受到div使用位置的影响.其中,我只是称为"幽灵div"
我确定这是一个常见问题,但我不知道如何正确地说出来,所以我无法找到正确的问题.
例:

我希望有一个包含对子函数的引用的哈希,我可以根据用户定义的变量调用这些函数,我将尝试给出一个我正在尝试做的简化示例.
my %colors = (
vim => setup_vim(),
emacs => setup_emacs(),
)
$colors{$editor}(arg1, arg2, arg3)
Run Code Online (Sandbox Code Playgroud)
where setup_vim()和setup_emacs()将是我的文件中稍后定义的子函数,并且$editor是用户定义的变量(即vim或emacs).这可能吗?我无法让它工作,或找到有关该主题的良好信息.谢谢.
(注意我现在已经实现了它作为一个工作的Switch,但我认为像上面这样的哈希会更容易在现有代码中添加新条目)
我有一个python脚本,单独运行时效果很好.它基于硬编码的输入目录,扫描所有.mdb文件并将其放入列表中,然后在for循环中遍历它们.每次迭代都涉及多个表限制,连接,查询等.
唯一的问题..在输入数据集上运行大约需要36个小时,而这个脚本只会在这个实例中用于此数据集,我想提高性能,因为我经常编辑字段选择,结果包括,加入方法等我想说它需要很长时间,因为我的脚本效率低下,但任何低效率都会很小,因为几乎所有的处理时间都专用于地理处理器对象.
我在主脚本中的所有相关内容是:
indir = "D:\\basil\\input"
mdblist = createDeepMdbList(indir)
for infile in mdblist:
processMdb(infile)
Run Code Online (Sandbox Code Playgroud)
它在顺序执行时也能完美执行.
我尝试过使用Parallel Python:
ppservers = ()
job_server = pp.Server(ppservers=ppservers)
inputs = tuple(mdblist)
functions = (preparePointLayer, prepareInterTable, jointInterToPoint,\
prepareDataTable, exportElemTables, joinDatatoPoint, exportToShapefile)
modules = ("sys", "os", "arcgisscripting", "string", "time")
fn = pp.Template(job_server, processMdb, functions, modules)
jobs = [(input, fn.submit(input)) for input in inputs]
Run Code Online (Sandbox Code Playgroud)
它成功创建了8个进程,8个地理处理器对象......然后失败了.
我没有对内置的Python多线程工具进行过广泛的实验,但希望能够提供一些指导,简单地生成多达8个进程,这些进程通过mdblist表示的队列.在任何时候都不会尝试由多个进程同时写入或读取任何文件.为了使事情暂时变得简单,由于这个问题,我还删除了所有的日志记录工具; 我已经足够多次运行这个脚本,知道它的工作原理除了4104输入的4个文件之外,这些文件的数据格式略有不同.
建议吗?尝试多线程Arc Python脚本的智慧?
我假设在红宝石中有一个很好的单行方式
if mystr == "abc" or "def " or "ghi" or "xyz"
Run Code Online (Sandbox Code Playgroud)
但在我通常咨询的在线参考文献中找不到如何做到这一点...
谢谢!
以下代码仅用于说明我的问题.
template<class T>
class array<T>
{
public:
// constructor
array(cap = 10):capacity(cap)
{element = new T [capacity]; size =0;}
// destructor
~array(){delete [] element;}
void erase(int i);
private:
T *element;
int capacity;
int size;
};
template<class T>
void class array<T>::erase(int i){
// copy
// destruct object
element[i].~T(); ////
// other codes
}
Run Code Online (Sandbox Code Playgroud)
如果我array<string> arr在main.cpp.当我使用时erase(5),对象element[5]被破坏但是空间element[5]不会被释放,我可以用来element[5] = "abc"在这里放一个新值吗?或者我是否应该使用placement new来在空间中添加新值element [5]?
当程序结束时,arr<string>将调用它自己的析构函数,它也会调用delete [] element.因此,字符串的析构函数将首先运行以销毁对象,然后释放空间.但是因为我已经明确地破坏了element[5],所以析构函数(由arr的destuctor调用)运行两次来破坏element[5] …
我想要完全相同的东西django.contrib.contenttypes.generic.GenericForeignKey,而OneToOne不是ForeignKey.我认为一个简单(虽然略微不优雅)的解决方法是添加unique=True到相关领域,但是那个borks.
我有这样一个数组:
var movies = [
{ Name: "The Red Violin", ReleaseYear: "1998", Director: "François Girard" },
{ Name: "Eyes Wide Shut", ReleaseYear: "1999", Director: "Stanley Kubrick" },
{ Name: "The Inheritance", ReleaseYear: "1976", Director: "Mauro Bolognini" }
];
Run Code Online (Sandbox Code Playgroud)
我想找到1999年发行的电影的位置.
应该回来1.
什么是最简单的方法?
谢谢.
有没有办法通过继承访问函数而无需设置函数访问公共?
例如:我有Foo.cfc,它扩展了Bar.cfc.如果我想从Foo.cfc调用Bar.cfc函数,我必须将函数访问权限设置为public.
如果我将函数访问权限设置为private,那么它只能从Foo.cfc访问.是否没有"中间"访问级别不是公开但不严格私有?即它只允许通过继承访问...
我是C++的新手,但我无法弄清楚为什么这不会为我编译.我在Mac上运行,使用Xcode进行编码,但是我正在用bash构建自己的makefile.
无论如何,我得到两个编译器错误,即使我已经包含了"字符串"类型也无法找到.任何帮助都会受到欢迎.码:
//#include <string> // I've tried it here, too. I'm foggy on include semantics, but I think it should be safe inside the current preprocessor "branch"
#ifndef APPCONTROLLER_H
#define APPCONTROLLER_H
#include <string>
class AppController {
// etc.
public:
int processInputEvents(string input); //error: ‘string’ has not been declared
string prompt(); //error: ‘string’ does not name a type
};
#endif
Run Code Online (Sandbox Code Playgroud)
我在main.cpp中包含了这个文件,而在main中的其他地方我使用了这个string类型,它运行得很好.虽然在主要方面我已经包括iostream而不是string(用于其他目的).是的,我也尝试在我的AppController类中包含iostream,但它没有解决任何问题(我也没想到它).
所以我不确定问题是什么.有任何想法吗?
c++ ×2
django ×2
python ×2
string ×2
arcgis ×1
coldfusion ×1
comparison ×1
css ×1
destructor ×1
g++ ×1
generics ×1
html ×1
javascript ×1
jquery ×1
perl ×1
ruby ×1