小编Rac*_*ole的帖子

为什么尽管有FACTORY_DJANGO_GET_OR_CREATE,FactoryBoy还是从SubFactory中创建了一个新对象

我刚刚开始将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)

django unit-testing factory-boy

5
推荐指数
1
解决办法
3052
查看次数

在R数据帧中,如何广播与维度对应的列?

我有一个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)

merge aggregate r dataframe

5
推荐指数
1
解决办法
612
查看次数

关于django-mptt的Django-CMS警告

我有一个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.任何人都可以给我任何建议吗?

谢谢

django django-mptt django-cms

3
推荐指数
1
解决办法
1672
查看次数

如何在ggplot2 stat_summary图中设置多种颜色?

如何使用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'),但这仍然只显示一条绿线。

如何更改该图中的颜色?

谢谢

r ggplot2

3
推荐指数
1
解决办法
4491
查看次数

d3线和面积图未使用新数据阵列更新

我写了一个可重复使用的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)

javascript charts d3.js

2
推荐指数
1
解决办法
1447
查看次数