我正在尝试根据外键的特定字段的值过滤Django中的表.
例如,我有两个模型 -
class Asset(models.Model):
name = models.TextField(max_length=150)
project = models.ForeignKey('Project')
class Project(models.Model):
name = models.TextField(max_length=150)
Run Code Online (Sandbox Code Playgroud)
我想根据相关项目的名称过滤我的资产清单.
目前我正在执行两个查询:
project_list = Project.objects.filter(name__contains="Foo")
asset_list = Asset.objects.filter(desc__contains=filter,
project__in=project_list).order_by('desc')
Run Code Online (Sandbox Code Playgroud)
我想知道是否有办法在主查询中指定这种过滤方式?
有人可以向我解释为什么这样有效(在Python 2.5中):
class Foo(object):
pass
class Bar(Foo):
pass
print(Foo.__subclasses__())
Run Code Online (Sandbox Code Playgroud)
但这不是:
class Foo():
pass
class Bar(Foo):
pass
print(Foo.__subclasses__())
Run Code Online (Sandbox Code Playgroud)
后者返回"AttributeError:class Foo没有属性' __subclasses__'",但我不知道为什么.我知道这与旧式和新式类有关,但我不清楚为什么会使这个功能不可用.
澄清:我希望理解为什么__subclasses__()老式的不可用,我得到的方法对于旧式的类不存在但我不知道它是什么新的样式使这些新的功能可能.
我想在我的所有Javascript源文件上运行JSHint,但其中一些有一些嵌入式Django模板标记.JSHint在这个标记上引发了大量错误.
还有办法要么......
我假设我可以编写一堆代码来做#2,但我想知道是否有更简单的方法.
我的数据看起来像这样......
var data = [{name:'a', value : 97},
{name:'b', value : 24},
{name:'c', value : 10}];
Run Code Online (Sandbox Code Playgroud)
我有一个像这样创建的序数量表......
var y = d3.scale.ordinal().rangeBands([0, 30 * data.length]);
Run Code Online (Sandbox Code Playgroud)
我用它来创建这样的基本图...
chart.selectAll("rect")
.data(data)
.enter().append("svg:rect")
.attr("y", function(d,i){ return y(d.name);})
.attr("width", function(d,i){ return x(d.value);})
.attr("height", y.rangeBand());
Run Code Online (Sandbox Code Playgroud)
根据d3文档(此处),您无需为序数规范指定域,并且在尝试使用它时将填充它.在我的情况下,但是y(d.name)总是返回0并且y.rangeBand()引发异常,即使我看到域数组已经填充在scale对象中.
所以,我通过预先定义我的域来解决这个问题...
.domain(data.map(function (d){ return d.name;}))
Run Code Online (Sandbox Code Playgroud)
但我希望能够动态添加到此域,如果我这样做,它不会超出创建时设置的原始值.这甚至可能吗?
我对d3很新,所以我可能会遗漏一些重要的东西.
我在perforce中存储了各种自定义二进制文件,对于许多文件类型,我构建了一个自定义diff工具,向内容创建者显示文件实际更改的差异.
例如,如果文件将简单键值对保存为压缩二进制blob,则diff工具会将每个版本加载到内存格式中,并生成一个添加,删除和编辑的列表,该文件在一个漂亮干净的报表视图中显示.
就像P4V中的内置图像差异工具一样,我希望能够在我的软件仓库中使用我自己的差异工具来处理某些文件扩展,并允许用户使用现有的P4V界面来选择差异修改和检查历史记录.
所以,我知道你可以为P4V编写加载项,但是我找不到任何关于它的文档,我想知道P4V中是否有这种扩展功能以及如何使用它?
我有一个使用Django和TastyPie构建的REST API.我的目标是在将新数据发布到特定模型时将任务添加到我的作业队列中.
我打算挂钩到post_save然后触发,但模型包含ManyToMany关系,因此在m2m关系更新之前触发post_save并挂钩到m2m_changed信号似乎很乱.我收到多个信号事件,我的代码需要在每个事件之后检查实例并尝试确定它是否准备好触发事件.一些ManyToMany字段可以是Null,所以当我得到m2m_changed信号时,我真的不知道它是否已经完成保存.
有没有正确的方法来做到这一点?TastyPie允许我挂钩POST事件并在最后做一些事情吗?我发现的所有东西都指向post_save事件来做这件事.
当完成给定模型实例的所有m2m更新时,Django是否有办法发信号通知我?
我正在寻找一种方法来获取从Python中的特定基类派生的所有类的列表.
更具体地说,我使用的是Django,我有一个抽象的基础模型,然后是几个派生自该基类的模型......
class Asset(models.Model):
name = models.CharField(max_length=500)
last_update = models.DateTimeField(default=datetime.datetime.now())
category = models.CharField(max_length=200, default='None')
class Meta:
abstract = True
class AssetTypeA(Asset):
junk = models.CharField(max_length=200)
hasJunk = models.BooleanField()
def __unicode__(self):
return self.junk
class AssetTypeB(Asset):
stuff= models.CharField(max_length=200)
def __unicode__(self):
return self.stuff
Run Code Online (Sandbox Code Playgroud)
我希望能够检测是否有人添加了新的AssetTypeX模型并生成了适当的页面,但是目前我手动维护一个列表,有没有办法确定任何派生自"资产"的类名列表?