小编Nic*_*ton的帖子

Django、DataWizard、SessionWizardView 获取当前用户

我正在创建一系列表单,通过 Django 的表单向导处理,但是,表单由许多下拉框组成,其内容取决于当前用户,因此,我需要将 User 作为关键字参数传递。

我目前所拥有的是:

class ViewDataWizard(SessionWizardView):
    template_name="wizards/data/view_data.html"
    def done(self, form_list,**kwargs):
        form_data = process_form_data(form_list)
        return render_to_response('wizards/data/view_data_done.html',{'form_data':form_data})
Run Code Online (Sandbox Code Playgroud)

但是,我正在寻求生产这个:

class ViewDataWizard(SessionWizardView):
    template_name="wizards/data/view_data.html"
    def get_form_kwargs(self, step):
        if step == 0:
            return {'user':<USEROBJECT>}
        else:
            return {}
    def done(self, form_list,**kwargs):
        form_data = process_form_data(form_list)
        return render_to_response('wizards/data/view_data_done.html',{'form_data':form_data})
Run Code Online (Sandbox Code Playgroud)

在上面的第二个示例中,我需要用当前用户替换 USEROBJECT,以生成一系列表单。

我错过了一些非常明显的东西吗?传统上我会从request.user给定的视图中获取用户,但是,这在表单向导过程中似乎难以捉摸......

django formwizard

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

加速ddply

data.frame喜欢这样的:

n  = 50
df = data.frame(group=sample(1:as.integer(n/2),n,replace=T),
                x = runif(n),
                y = runif(n),
                z = runif(n))
df = df[with(df,order(group)),]
Run Code Online (Sandbox Code Playgroud)

我需要做什么,对每个独特的价值group,是制作部分,即其中新列产生xend,yend并且zend,它们是x,y,z该组中的前一个点的值.对于组中的最后一个值,结束将作为组中的第一个点.

我可以通过以下方式执行此操作:

res = ddply(df,"group",function(d){ 
  ixc  = c("x","y","z")
  dfE  = d[,ixc]
  dfE  = rbind(dfE[nrow(dfE),],dfE[1:(nrow(dfE)-1),])
  colnames(dfE) = paste0(ixc,"end")
  cbind(d,dfE)
})
print(head(res))
Run Code Online (Sandbox Code Playgroud)

当它n很小时,这是微不足道的,然而,当n变大时,执行上述操作的时间变得非常重要,是否有更快的方法来执行此操作,也许使用data.table

r plyr data.table

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

Django 详细名称和翻译

有人可以告诉我以下方法在翻译方面是否有问题吗?

我担心冗长的名称在数据库迁移时变得固定。

模型.py

from django.utils.translation import gettext as _
class UserClient(models.Model):
    user             = models.OneToOneField(User,related_name='profile_client')
    phone_cell       = PhoneNumberField(verbose_name=_(u'Phone (Cell)'),null=True,blank=False)
    phone_home       = PhoneNumberField(verbose_name_(u'Phone (Home)'),null=True,blank=True)
Run Code Online (Sandbox Code Playgroud)

如果以上有问题,实施以下是否更好?

表格.py

class ClientForm(forms.ModelForm):
    def __init__(self,*args,**kwargs):
        super(ClientForm,self).__init__(*args,**kwargs)
        self.fields['phone_cell'].label = _(u'Phone (Cell)')
        self.fields['phone_home'].label = _(u'Phone (Home)')
Run Code Online (Sandbox Code Playgroud)

django translation

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

R,R6,从R6Generator对象获取完整的类名

在R6中,如何在不创建生成器对象实例的情况下获得类继承的完整列表?

考虑以下:

A = R6::R6Class("Base",NULL)
B = R6::R6Class("Top",inherit = A)
class(B)     #Returns 'R6ClassGenerator'
B$classname  #Returns 'Top' 
Run Code Online (Sandbox Code Playgroud)

我想要的是 c('Top','Base','R6')

换句话说,否则会返回什么 class(B$new())

在现实世界中,我有一组复杂的继承,而且初始化程序有很多参数,有些没有默认值,因此我试图避免实例化新对象以获得此信息。

r class instantiation r6

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

在犰狳对象上的malloc

在armadillo矩阵实例上调用malloc的惯例是什么.

如果我想为100 x 100矩阵预先分配内存,这是否正确?

fmat* squareMat  = (fmat*)malloc(sizeof(fmat(100,100)));
Run Code Online (Sandbox Code Playgroud)

c++ malloc armadillo

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

使用geom_hline进行R ggplot2颜色映射

我试图将颜色变量映射到geom_hline,但似乎不像其他几何一样工作.在每种情况下,这些都不会产生固定的黑线.

ggplot(data.frame(x=0,y=0,series="ABC"),aes(x,y,color=series))) + 
  geom_point() +
  geom_hline(yintercept=0,show.legend = TRUE)

ggplot(data.frame(x=0,y=0),aes(x,y)) + 
  geom_point() +
  geom_hline(yintercept=0,aes(color="ABC"),show.legend = TRUE)
Run Code Online (Sandbox Code Playgroud)

这是一个错误,还是有一些我缺少的语法?

r ggplot2 geom-hline

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

C++在'.'之前期待主表达式 代币

有人可以向我解释为什么以下给我一个错误,以及如何解决.

编译错误是:

error: expected primary-expression before ‘.’ token
Run Code Online (Sandbox Code Playgroud)

简化的类和方法:

class test{
    private:
        int data;
    public:
        test() : data(1){}
        test(const test& copy):data(copy.data){} //copy constructor
        int getData(){
            return data;
        }
};
Run Code Online (Sandbox Code Playgroud)

这个方法不会像这样编译:

int getDataFromClass(const test& src){
    return test.getData();
}
Run Code Online (Sandbox Code Playgroud)

但它确实如此

int getDataFromClass(const test& src){
    test t = test(src);
    return t.getData();
}
Run Code Online (Sandbox Code Playgroud)

第二种方法违背了通过引用传递数据的目的,因此是不希望的.

我希望能够通过引用传递一个类作为const,并且能够使用一些getter方法而无需创建本地副本.

c++

0
推荐指数
1
解决办法
101
查看次数