我刚刚开始将Factory Boy与Django结合使用。它具有一个设置FACTORY_DJANGO_GET_OR_CREATE,表示如果已经存在则不会创建新对象。但是,当我要求使用现有对象的现有SubFactory对象时,尽管进行了此设置,它仍会创建未使用的对象。
例如,在一个全新的项目中,我尝试过:
# models.py
from django.db import models
class A(models.Model):
name = models.CharField(max_length=10)
class B(models.Model):
name = models.CharField(max_length=10)
a = models.ForeignKey(A)
Run Code Online (Sandbox Code Playgroud)
和
# factories.py
import factory
from . import models
class AFactory(factory.DjangoModelFactory):
FACTORY_FOR = models.A
FACTORY_DJANGO_GET_OR_CREATE = ('name',)
name = factory.Sequence(lambda n: 'A-{0}'.format(n))
class BFactory(factory.DjangoModelFactory):
FACTORY_FOR = models.B
FACTORY_DJANGO_GET_OR_CREATE = ('name',)
name = factory.Sequence(lambda n: 'B-{0}'.format(n))
a = factory.SubFactory(AFactory)
Run Code Online (Sandbox Code Playgroud)
现在:
from factories import *
a = AFactory(name="Apple")
models.A.objects.all()
# one object
b = …Run Code Online (Sandbox Code Playgroud) 我有一个R数据帧:
# here just define it directly, but it comes from a simulation
simPrice <- data.frame(simId=c(1,1,2,2),
crop=rep(c('apple','pear'),2),
mean=rep(c(10,22),2),
sd=rep(c(2,4),2),
price=c(9,21,12,18))
simId crop mean sd price
1 1 apple 10 2 9
2 1 pear 22 4 21
3 2 apple 10 2 12
4 2 pear 22 4 18
Run Code Online (Sandbox Code Playgroud)
这是模拟的两次不同迭代中的水果(苹果和梨)的价格.一般来说,我可能有任何数量的水果或迭代.至关重要的是,我可能还有其他专栏(例如品种,销售日期,销售地点等).
我有另一个数据框,给出了在许多农场种植的水果量:
# here just define it directly, but it comes from a simulation
simVol <- data.frame(simId=c(1,1,1,1,2,2,2,2),
farm=rep(c('farm A', 'farm A', 'farm B', 'farm B'),2),
crop=rep(c('apple','pear'),4),
mean=rep(c(10,22),4),
sd=rep(c(2,4),4),
volume=c(9,21,12,18,10,22,11,19))
simId farm …Run Code Online (Sandbox Code Playgroud) 我有一个Django-CMS 2.4.1项目,总是给我警告:
DeprecationWarning: Implicit manager CMSPlugin.tree will be removed in django-mptt 0.6. Explicitly define a TreeManager() on your model to remove this warning.
Run Code Online (Sandbox Code Playgroud)
这只发生在生产中 - 而不是在开发中.
我试过了:
./manage.py cms fix-mptt
Run Code Online (Sandbox Code Playgroud)
这给了我输出(在与上面相同的警告之后):
fixing mptt page tree
fixing mptt plugin tree
all done
Run Code Online (Sandbox Code Playgroud)
但是......这并没有解决问题,例如,如果我重复命令它再次做同样的事情,同样的警告.
警告似乎没有造成任何伤害,但我想它将与下一版本的django-mptt.任何人都可以给我任何建议吗?
谢谢
如何使用ggplot2with stat_summary显示我选择的颜色?例如。:
simVol <- data.frame(simId=c(1,1,1,1,2,2,2,2),
farm=rep(c('farm A', 'farm A', 'farm B', 'farm B'),2),
period=rep(1:2,4),
volume=c(9,21,12,18,10,22,11,19))
P10meanP90 <- function(x) data.frame(
y = mean(x),
ymin = quantile(x, .1),
ymax = quantile(x, .9)
)
Run Code Online (Sandbox Code Playgroud)
此命令使用默认颜色绘制每个服务器场在期间内的体积分布图:
ggplot(simVol, aes(x=period, y=volume, colour=farm)) +
stat_summary(fun.data="P10meanP90", geom="smooth", size=2)
Run Code Online (Sandbox Code Playgroud)
但是,如果将添加colour='green'到的参数stat_summary,则会绘制跨服务器场的汇总。我尝试使用colour=c('green','orange'),但这仍然只显示一条绿线。
如何更改该图中的颜色?
谢谢
我写了一个可重复使用的d3折线图(下面的代码).不幸的是,它只在更新传递给它的数据数组时才能正确更新; 如果传递一个新的数据数组,它根本不会更新 - 你可以在这个jsfiddle中看到它.
这是html,主要是嵌入式演示调用脚本:
<style>
path { stroke: purple; stroke-width: 2px; fill: none; }
</style>
<body>
<div id="demo"></div>
<script src="http://d3js.org/d3.v3.min.js"></script>
<script src="demoChart.js"></script>
<script>
var chart = demoChart();
var pts = [[[0,0],[200,0.25],[500,1]]];
d3.select("#demo").datum(pts).call(chart);
setTimeout(function() {
console.log("Modifying data array");
pts[0][2][1] = 0.5;
d3.select("#demo").datum(pts).call(chart);
},1000);
setTimeout(function() {
console.log("Passing new data array");
d3.select("#demo").datum([[[0,1],[200,0.45],[500,0]]]).call(chart);
},2000);
</script>
Run Code Online (Sandbox Code Playgroud)
您可以看到它第二次调用chart它直接更新数据数组中的单个点(pts[0][3][1] = 0.5),并且图表可以正常设置动画.第三次传递新数据数组时,图表不会更改.
这是demoChart.js代码(基于可重用的图表模式):
function demoChart() {
function xs(d) { return xScale(d[0]) }
function ys(d) { return yScale(d[1]) …Run Code Online (Sandbox Code Playgroud) django ×2
r ×2
aggregate ×1
charts ×1
d3.js ×1
dataframe ×1
django-cms ×1
django-mptt ×1
factory-boy ×1
ggplot2 ×1
javascript ×1
merge ×1
unit-testing ×1