Python Tech

Django复制记录的方法

最近的Django项目中有复制记录的需求。数据库里有一张名为Party的表,记录用户创建的party,现在要让用户能够复制一个新的party。本身非常简单的一个功能,但运行的时候出错了。我以为是复制过程出错,所以测试了一下Django中复制记录可能遇到的情况(后来发现是其他代码的逻辑出了问题),结果整理如下。 1.Reset pk 在Django中复制一条记录最简单的方法应该是先取出这条记录,将它的主键设置为None,然后再保存一次。

2.Keyword Arguments 如果某张表除了主键还有其他AutoField字段,就要换一种方式了,虽然也可以手动根据字段名将其指定为空,但直接遍历出字段名和相应的值,把其中的AutoField字段赋值为None会比较简单。

Continue Reading
Other Python

最佳CP算法

由光棍节想到的算法问题。假设一个学校里有100个少年和100个少女,少年和少女心中都有一个好感度数值排列表,现在我们来做CP(coterie partner),按照正常的剧情展开,勇敢的少年们去向少女们告白,大致流程是这样: 第一天,所有少年都去找排在他们好感度列表第1位的少女表白。告白结束后,少女如果只收到一个少年的告白,那么就和这个少年交往。如果收到多于一个少年的告白,就和其中她最喜欢的少年交往,把其他少年都拒绝掉。 第二天,所有在第一天被发好人卡的少年们,接着发起告白行动,去向排在自己好感度列表第2位的少女告白。告白结束后,如果某个少女已经在交往中,但是又有一个她更喜欢的少年来向她告白,那少女就把原来那个少年甩掉,再和这个她更喜欢的少年交往。 第三天,少年们继续发起告白运动,包括第一天告白成功,但第二天被挖了墙角的,接着向还没有拒绝过他的女生中他最喜欢的那个告白。

Continue Reading
Front Product

Justproto:Linux下Axure的替代方案

要在Linux下运行Windows程序,最好是用虚拟机。当然这是在通常情况下的最佳方案,如果是连接投影仪,进行双桌面操作的时候,还用虚拟机就会非常不顺手,只能想其他方案。退而求其次,自然就是用wine来运行了,我常在wine上运行Photoshop 9.0,一直非常顺利。wine0.9以后增加了对.Net Framewrok2.0的支持,理论上是满足Axure之前版本运行条件的。但在wine1.2/1.3下模拟winxp/win2000,测试了Axure 4.0/5.5/5.6三个版本,可以安装,不能运行(Axure 6.0基于.Net Framework4.0,直接放弃测试了)。昨天折腾了一晚上,把Axure 5.6所有用到的dll文件都复制到wine中,仍然报错。至此算是暂时放弃用wine来运行Axure了。 Linux下有一些不错的原型工具,比如Pencil。但要找到一个Axure的替代方案比较困难,因为它的功能很强大,长期使用我也习惯了它的界面布局,所以Linux桌面的原型工具都没有能用得很顺手的。而在线原型工具,至今为止我用过的十多个在线原型工具中,最接近的Axure的是Justproto(收费……)。

Continue Reading