小编pri*_*stc的帖子

将项目重新排列成一个数组,彼此没有相似的项目

让我们说我有一个块集合.12是红色,8是蓝色,5是黄色,1是绿色.我需要创建一个算法,将这些对象输出到一个数组中,彼此相邻,没有红色块,没有蓝色块彼此相邻,等等.输出应该如下所示:

红色,蓝色,红色,蓝色,红色,蓝色,黄色,蓝色,绿色,红色,黄色等.

到目前为止,在我的编程经验中,我来到了不得不写一个算法的地方.我最后一次这样做是在大约两年前为创业​​公司工作.我在python中实现了这样的算法,但源代码不可用.我记得我花了至少100行创作.

这个算法有名字吗?我不想再次实施它.

algorithm

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

在课堂上添加**kwarg

class StatusForm(ModelForm):

    bases = forms.ModelMultipleChoiceField(
            queryset=Base.objects.all(),  #this should get overwritten
            widget=forms.SelectMultiple,
        )

    class Meta:
        model = HiringStatus
        exclude = ('company', 'date')

    def __init__(self, *args, **kwargs):
        super(StatusForm, self).__init__(*args, **kwargs)
        if kwargs.has_key('bases_queryset'):
            self.fields['bases'].queryset = kwargs['bases_queryset']
Run Code Online (Sandbox Code Playgroud)

我想在这个表单中添加一个选项,允许我创建一个这样的表单:

form = StatusForm(bases_queryset=Base.objects.filter([...])
Run Code Online (Sandbox Code Playgroud)

但我不知何故需要在该类中"添加"该关键字参数,以便识别它.他们现在的方式,我只是得到这个错误:

__init__() got an unexpected keyword argument 'bases_queryset'

python django

3
推荐指数
2
解决办法
6244
查看次数

动态填充表单集中的字段

我有两个看起来像这样的模型:

class RouteBase(models.Model):
    base        =   models.ForeignKey("Base")
    route       =   models.ForeignKey("Route")
    sequence    =   models.IntegerField()

class Route(models.Model):
    bases       =   models.ManyToManyField("Base", through="RouteBase", blank=True)
    description =   models.TextField(blank=True)
    #and a few other attributes omitted for brevity
Run Code Online (Sandbox Code Playgroud)

...然后是一个看起来像这样的模型:

class RouteBaseForm(ModelForm):
    base = forms.ModelChoiceField(queryset=Base.objects.all(), widget=forms.TextInput)
    sequence = forms.IntegerField(widget=forms.HiddenInput)

    class Meta:
        model = RouteBase
Run Code Online (Sandbox Code Playgroud)

如您所见,序列窗口小部件是隐藏的,因为我希望这个字段由django自动处理.我希望用户只需通过文本框输入Base.序列由文本框的顺序推断.

我创建了一个带有此表单的formset,用于创建/编辑路径中的所有基础:

RouteBaseFormset = inlineformset_factory(Route, RouteBase, form=RouteBaseForm, extra=5, )
Run Code Online (Sandbox Code Playgroud)

创建此formset时,序列字段为空.在保存formset之前我需要用值填充它(否则它将不会验证).我可以想到四种方法

  1. 在我将formset发送到模板之前,我运行以下代码:
    i=1
    for form in formset.forms:
        form.fields["sequence"].initial = i
        i += 1

除了一个问题,这很好.当formset被提交回视图以进行保存时,使用formset创建的所有 5个额外字段都将填入序列值.当用户只想向路线添加2或3个碱基时,这会导致问题.弹出验证错误,因为该表单的必填字段"base"为空.我可以在formset被POST之后运行一些代码,检查是否存在一个base,如果没有,删除序列,但如果我要这样做,我也可以......

  1. 当formset为POST时运行一些代码,检查是否已输入Base,如果是,则添加序列,如果没有,则将该字段留空.这样,当您尝试.save()使用formset时,空值确保该特定表单不会放入数据库中.唯一的问题是我不能对表单做任何事情,直到我运行.save(commit=False)我不能做,因为formset不验证.但我可以......

  2. 通过复制request.POST变量并手动设置序列来添加序列值,但这看起来非常糟糕. …

django django-forms inline-formset

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

如何在视图中渲染django表单?

for field in FIELDS:
    row = []
    row.append("<tr>")
    row.append("<td>" + str(myform.fields.get(field)) + "</td>")
    row.append("</tr>")

    custom_fields.append("".join(row))
Run Code Online (Sandbox Code Playgroud)

当我将custom_fields变量提供给模板时,我得到的只是:

<tr><td><django.forms.widgets.CheckboxInput object at 0x1fa7d90></td></tr>
Run Code Online (Sandbox Code Playgroud)

如何才能正确呈现表单?


这就是我最终要做的事情:

form1 = CustomForm1()
form2 = CustomForm2()
form3 = CustomForm3()

for field in FIELDS:
    row = []
    row.append("<tr>")
    row.append("<td>" + str(form1.fields.get(field)) + "</td>")
    row.append("<td>" + str(form2.fields.get(field)) + "</td>")
    row.append("<td>" + str(form3.fields.get(field)) + "</td>")
    row.append("</tr>")

    custom_fields.append("".join(row))
Run Code Online (Sandbox Code Playgroud)

所以我可以在一个表中一起显示所有表单字段.

django django-forms

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

GPL和Webapp来源

GPL是否要求开源(商业)Web应用程序?

请给出扩展的答案,而不仅仅是"是"/"否",但为什么.

licensing gpl web-applications

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

在Hive中使用UDF调试信息

我正在努力让GeoIP与蜂巢一起工作.我发现了这个:http://www.jointhegrid.com/hive-udf-geo-ip-jtg/index.jsp,这似乎正是我想要的.

我建了罐子(我没有java经验,所以我只希望我做了这个部分),将它们添加到我的查询中并得到:

hive> ADD jar hive-udf-geo-ip-jtg.jar;
Added hive-udf-geo-ip-jtg.jar to class path
Added resource: hive-udf-geo-ip-jtg.jar
hive> ADD jar geo-ip-java.jar;
Added geo-ip-java.jar to class path
Added resource: geo-ip-java.jar
hive> ADD file GeoIPCity.dat;
Added resource: GeoIPCity.dat
hive> create temporary function geoip as 'com.jointhegrid.hive.udf.GenericUDFGeoIP';
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.FunctionTask
Run Code Online (Sandbox Code Playgroud)

有没有办法找出到底出了什么问题?return code 1并没有告诉我多少......某处有日志文件吗?

java hive

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

使用KML"shapefile"查询PostGIS数据库

我正在开发一个Google Maps应用程序,该应用程序可以执行以下操作(在低缩放级别):

  1. 在地图上打印一堆多边形叠加.这些多边形是使用我在Google Earth中创建的KML文件创建的.基本上这些多边形覆盖了大陆上大陆的大块.其中15个覆盖了整个世界.

  2. 在每个多边形叠加层的顶部,会显示一个数字,表示该多边形内存在的点的总数.

我想在地图上显示的点有一个代表国家的字段和一个纬度/经度字段.我得到总数的方法是通过国家代码运行每个多边形的查询,如下所示:

east_europe_total = Point.objects.filter( Q(country_code='TR') | Q(country_code='CZ') ... ).count()
Run Code Online (Sandbox Code Playgroud)

如果我想要跨越一个国家,或者如果我想重新组织我的多边形"扇区",这不是很好.一个更好的解决方案是将KML文件提供给数据库(即PostGIS)并将其全部整理出来.这有可能吗?如果没有,那么将KML文件转换为既可以轻松插入Google地图可以通过postGIS查询的格式呢?

django google-maps postgis

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

对于在django中将CSV文件制作成ZIP文件感到困惑

我有一个视图,从我的网站获取数据,然后将其变成zip压缩的csv文件.这是我的工作代码sans zip:

def backup_to_csv(request):
    response = HttpResponse(mimetype='text/csv')
    response['Content-Disposition'] = 'attachment; filename=backup.csv'

    writer = csv.writer(response, dialect='excel')

    #code for writing csv file go here...

    return response
Run Code Online (Sandbox Code Playgroud)

它很棒.现在我希望在发送之前压缩该文件.这是我被卡住的地方.

def backup_to_csv(request):

    output = StringIO.StringIO() ## temp output file
    writer = csv.writer(output, dialect='excel')

    #code for writing csv file go here...

    response = HttpResponse(mimetype='application/zip')
    response['Content-Disposition'] = 'attachment; filename=backup.csv.zip'

    z = zipfile.ZipFile(response,'w')   ## write zip to response
    z.writestr("filename.csv", output)  ## write csv file to zip

    return response
Run Code Online (Sandbox Code Playgroud)

但那不是它,我不知道如何做到这一点.

python django zipfile

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

sqlalchemy:仅在一列上不同

我的桌子看起来像这样:

    title      |    slug
------------------------------
The Title      | the-title
Another Title  | another-title
another title  | another-title
Run Code Online (Sandbox Code Playgroud)

我想通过不同的 slug 进行选择,但也希望标题作为结果的一部分返回。多场比赛返回哪个标题,我不在乎。

所以我的结果看起来像这样:

[('The Title', 'the-title'), ('Another Title', 'another-title')]
Run Code Online (Sandbox Code Playgroud)

python database sqlalchemy

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

如何获取函数的关键字参数

>>> def test(arg1, arg2, arg3=None): pass
>>> test.func_code.co_varnames
('arg1', 'arg2, 'arg3')
Run Code Online (Sandbox Code Playgroud)

我想要的是:

{'args': ('arg1', 'arg2'), 'kwargs': {'arg3': None}}
Run Code Online (Sandbox Code Playgroud)

有没有办法实现这个目标?

python metaprogramming

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

如何将整数转换为base58?

我有一个十进制数,我想将其作为 base58 字符串显示在屏幕上。我已经有了:

>>> from base58 import b58encode
>>> b58encode('33')
'4tz'
Run Code Online (Sandbox Code Playgroud)

这看起来是正确的,但是由于数字小于 58,因此生成的 base58 字符串不应该只有一个字符吗?我肯定错过了一些步骤。我认为这是因为我传递的是字符串“33”,而不是数字 33。

当我传入一个直整数时,出现错误:

>>> b58encode(33)
TypeError: a bytes-like object is required (also str), not 'int'
Run Code Online (Sandbox Code Playgroud)

基本上我想用 base58 编码一个数字,以便它使用尽可能少的字符......

python base58

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