小编Ada*_*son的帖子

Django相当于SQL REPLACE

这个SQL是否有Django ORM最佳实践:

REPLACE app_model SET field_1 = 'some val', field_2 = 'some val';
Run Code Online (Sandbox Code Playgroud)

假设:field_1或field_2在它们上面会有一个唯一的密钥(或者在我的情况下都是两个),否则这将始终评估为INSERT.

编辑:

我现在最好的个人答案就是这个,但这是2-3个查询,其中1应该是可能的:

    from django.core.exceptions import ValidationError
    try:
        Model(field_1='some val',field_2='some val').validate_unique()
        Model(field_1='some val',field_2='some val',extra_field='some val').save()
    except ValidationError:
        Model.objects.filter(field_1='some val',field_2='some val').update(extra_field='some val')
Run Code Online (Sandbox Code Playgroud)

django django-orm

6
推荐指数
3
解决办法
6053
查看次数

Python中集合的不区分大小写的比较

我有两套(虽然我可以做清单,或其他):

a = frozenset(('Today','I','am','fine'))
b = frozenset(('hello','how','are','you','today'))
Run Code Online (Sandbox Code Playgroud)

我想得到:

frozenset(['Today'])
Run Code Online (Sandbox Code Playgroud)

或至少:

frozenset(['today'])
Run Code Online (Sandbox Code Playgroud)

第二种选择是可行的,如果我小写我认为的一切,但我正在寻找一种更优雅的方式.有可能吗?

a.intersection(b) 
Run Code Online (Sandbox Code Playgroud)

以不区分大小写的方式?

Django中的快捷方式也很好,因为我正在使用该框架.

下面的交集方法示例(我无法弄清楚如何在注释中获取此格式):

print intersection('Today I am fine tomorrow'.split(),
                    'Hello How a re you TODAY and today and Today and Tomorrow'.split(),
                    key=str.lower)

[(['tomorrow'], ['Tomorrow']), (['Today'], ['TODAY', 'today', 'Today'])]
Run Code Online (Sandbox Code Playgroud)

python django compare

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

在python中打印长整数

如果我运行这个,其中vote.created_on是一个python日期时间:

import calendar
created_on_timestamp = calendar.timegm(vote.created_on.timetuple())*1000
created_on_timestamp = str(created_on_timestamp)
Run Code Online (Sandbox Code Playgroud)

created_on_timestamp将使用封装刻度线(')打印.如果我做int()或类似的东西,我会得到类似1240832864000L的东西,就JavaScript而言,这不是一个数字(这是我需要使用这些日期时间的地方).

有人知道处理这种情况的最佳方法吗?我应该把长条作为一个字符串并剥去刻度线吗?这看起来很疯狂.

===已编辑的附录===

更大的问题是Django正在将"转换成HTML编码的等价物"(或类似).处理这个问题的最好方法是将long转换为字符串,当模板解析字符串时,使用{{created_on_timestamp | safe将引号标记为引号.

python django datetime

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

缩小Django形式的选择

我有一个模型:

CAMPAIGN_TYPES = (
                  ('email','Email'),
                  ('display','Display'),
                  ('search','Search'),
                  )

class Campaign(models.Model):
    name = models.CharField(max_length=255)
    type = models.CharField(max_length=30,choices=CAMPAIGN_TYPES,default='display')
Run Code Online (Sandbox Code Playgroud)

一个表格:

class CampaignForm(ModelForm):
    class Meta:
        model = Campaign
Run Code Online (Sandbox Code Playgroud)

有没有办法限制"类型"字段可用的选项?我知道我可以做一个单值字段:CampaignForm(initial={'name':'Default Name'})但我找不到任何方法为选择集做这个.

django django-forms

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

Python需要变量样式

对于需要关键字参数'required_arg'的Python方法,最好的样式是什么:

def test_method(required_arg, *args, **kwargs):


def test_method(*args, **kwargs):
    required_arg = kwargs.pop('required_arg')
    if kwargs:
        raise ValueError('Unexpected keyword arguments: %s' % kwargs)
Run Code Online (Sandbox Code Playgroud)

或者是其他东西?我希望将来可以将它用于我的所有方法,所以我正在寻找在Python方法中处理所需关键字参数的最佳实践方法.

python

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

新的Web 2.0站点的框架/语言(2008年和2009年)

我知道我会得到一千个"取决于你想要做什么"的答案,但是说真的,在网上还没有关于这个的可靠信息.以下是我的假设 - 我认为它们现在很多人都很相似:

  1. 它现在是2008年10月.我想开始编写2009年1月的应用程序.我愿意使用beta代码,但到1月份,我想要一个没有"奇怪"问题的网站.话虽如此,如果一种语言比另一种语言慢10%,只要问题是线性的,我就不关心这些事情.我主要担心的是开发人员的生
  2. 我将使用Linux,Apache,MySQL作为应用程序.
  3. 我希望能够用稳定的库来运行scp和ftp客户端函数(我只选择了那两个,因为它们不是与Web相关的,但同时代表了任何大型应用程序可能使用的相当常见的网络协议).OpenID和Oauth等技术也将被使用.
  4. 经验丰富的网络开发人员随时可用(即我不必找到金融公司等人).
  5. 无论选择什么是常见的,并且会存在一段时间.
  6. 这是一个踢球者.我希望能够使用类似于HAML,SASS的高级表示层工具/语言.我肯定想要使用JQuery.
  7. 我将创建一个Facebook应用程序,并在某些时候处理短信,iPhone应用程序等...

此时,语言的选择是PHP(Cake,Symfony,Zend),Python(Django),Ruby(Merb).此时我真的介于Django和Merb之间,主要是因为其他人似乎都是这样.

请不要在这里放置任何非主流技术.我知道Merb主要是未经测试的,但他们声明的目标是一个坚实的平台,它背后有很多动力,所以我相信它是可行的.请不要回答Perl有多棒或.Net.

对于未来参考 - 已经做出了以下选择:

  • Debian(Lenny) - 用于将CPU周期转换为有用的东西.TRAC
  • 0.11 - 对于项目管理Gliffy - 对于线框等
  • Google文档/应用程序 - 用于文档,托管电子邮件等...
  • 亚马逊ec2/S3 - 用于托管,存储.

干杯,亚当

python django ruby-on-rails merb

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

在没有DoesNotExist错误的情况下在django中获取相关值的最佳实践

如果我在Django中有两个模型:

class Blog(models.Model):
    author = models.CharField()

class Post(models.Model):
    blog = models.ForeignKey(Blog)
Run Code Online (Sandbox Code Playgroud)

我想获得给定博客的所有帖子:

Blog.objects.get(author='John').post_set
Run Code Online (Sandbox Code Playgroud)

如果有一个包含author ='John'但没有帖子的博客,则会引发一个DoesNotExist异常.这是什么最好的解决方案?我可以尝试一下:除了:在前端,一个自定义管理器方法,或者有没有办法通常覆盖Django返回一个空集.就我的目的而言,DoNot Exist没用.

或者,整个问题可以回避:

Blog.objects.select_related('post').get(author='John').post_set.values()
Run Code Online (Sandbox Code Playgroud)

django django-models

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

在Django中处理请求变量的最佳方法

我有一个"在野外"的形式,它采用了许多不同的变量 - 可能会也可能不会填充.

   try:
        app_version = request.REQUEST["appVersion"]
    except:
        app_version = ''

    try:
        app_name = request.REQUEST["appName"]
    except:
        app_name = ''

    try:
        app_code_name = request.REQUEST["appCodeName"]
    except:
        app_code_name = ''
Run Code Online (Sandbox Code Playgroud)

有没有更严格的方法来实现这一目标?

django request

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

使用map()获取Python中字符串中存在列表元素的次数

我试图获取列表中每个项目在Python中的字符串中的次数:

paragraph = "I eat bananas and a banana"

def tester(x): return len(re.findall(x,paragraph))

map(tester, ['banana', 'loganberry', 'passion fruit'])
Run Code Online (Sandbox Code Playgroud)

返回[2,0,0]

然而,我想要做的是扩展它,以便我可以将段落值提供给map()函数.现在,tester()函数有段硬编码.有没有人有办法做到这一点(也许是一个n长度的段落值列表)?还有其他想法吗?

请记住,每个数组值在将来的某个时刻都会有权重 - 因此需要将值保留在列表中而不是将它们全部加在一起.

更新:段落通常为20K,列表通常有200多个成员.我的想法是地图并行运行 - 因此它比任何串行方法都更有效率.

python regex mapreduce

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

用于清理垃圾PHP的工具

我刚刚继承了一个70k的PHP代码库,我现在需要添加增强功能.我看到更糟糕,至少这个代码库使用MVC架构并且面向对象.但是,没有模板系统,许多类都被弃用 - 只被调用一次.我想我的方法可能如下:

  1. 查找实时服务器上48小时内未触及的所有文件,并将其作为删除的候选对象(幸运的是有一个实时服务器).
  2. 实现模板系统(Smarty)并尝试在模板中查找重复的代码.
  3. 很多方法都复制并粘贴了代码......我不知道我有多想弄乱它.

我的问题是:我应该采取哪些步骤,或者你会采取什么措施?你处理这个问题的方法是什么?有没有工具可以帮助找到重复的PHP代码?

php

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

在Python中处理Windows行结尾

我有一个来自Windows提供商的700MB XML文件.

正如人们所预料的那样,行结尾是'\ r \n'(或者vi中的^ M).除了让供应商发送'\n'之外,处理这种情况的最有效方法是什么:-)

  1. 使用os.linesep
  2. 使用rstrip()(需要打开文件......这看起来很疯狂)
  3. 使用通用换行支持在我的Mac Snow Leopard上不是标准配置 - 因此不是一种选择.

我对任何需要Python 2.6+的东西都很开放,但它需要在Snow Leopard和Ubuntu 9.10上运行,只需要很少的外部需求.我不介意一个小的性能损失,但我正在寻找标准的最佳方法来处理这个问题.

- - 编辑 - -

行结尾位于标记描述符的中间,否则它们不会是这样的问题.我知道这是一个糟糕的形式,他们不应该发送给我,但这就是我有文件和供应商大多是无能的.

python file

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