小编And*_*ler的帖子

for循环中的Python循环计数器

在我下面的示例代码中,是否真的需要counter = 0,还是有更好的,更多Python的方式来访问循环计数器?我看到了几个与循环计数器相关的PEP,但是它们被推迟或被拒绝(PEP 212PEP 281).

这是我的问题的简化示例.在我的实际应用程序中,这是通过图形完成的,整个菜单必须在每一帧重新绘制.但这表明它以简单的文本方式易于重现.

也许我还应该补充一点,我正在使用Python 2.5,尽管如果有特定于2.6或更高版本的方式我仍然感兴趣.

# Draw all the options, but highlight the selected index
def draw_menu(options, selected_index):
    counter = 0
    for option in options:
        if counter == selected_index:
            print " [*] %s" % option
        else:
            print " [ ] %s" % option
        counter += 1


options = ['Option 0', 'Option 1', 'Option 2', 'Option 3']

draw_menu(option, 2) # Draw menu with "Option2" selected
Run Code Online (Sandbox Code Playgroud)

运行时,输出:

 [ ] Option 0
 [ ] Option 1 …
Run Code Online (Sandbox Code Playgroud)

python loops for-loop

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

在order_by()中使用Django自定义模型方法属性

我目前正在学习Django,我的一些模型有自定义方法来获取以特定方式格式化的值.是否可以使用我在定义为order_by()的模型中定义为属性的这些自定义方法之一的值?

这是一个演示如何实现属性的示例.

class Author(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=40)
    email = models.EmailField(blank=True, verbose_name='e-mail')

    def _get_full_name(self):
        return u'%s %s' % (self.first_name, self.last_name)
    full_name = property(_get_full_name)

    def __unicode__(self):
        return self.full_name
Run Code Online (Sandbox Code Playgroud)

有了这个模型,我可以做到:

>>> Author.objects.all()
[<Author: John Doh>, <Author: Jane Doh>, <Author: Andre Miller>]
>>> Author.objects.order_by('first_name')
[<Author: Andre Miller>, <Author: Jane Doh>, <Author: John Doh>]
Run Code Online (Sandbox Code Playgroud)

但我做不到:

>>> Author.objects.order_by('full_name')
FieldError: Cannot resolve keyword 'full_name' into field. Choices are: book, email, first_name, id, last_name
Run Code Online (Sandbox Code Playgroud)

在像这样的自定义属性上使用order_by的正确方法是什么?

python django django-models

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

使用south来重构具有继承的Django模型

我想知道Django 南部是否可以进行以下迁移并仍保留数据.

之前:

我目前有两个应用程序,一个叫做tv,一个叫做电影,每个都有一个VideoFile模型(这里简化):

电视/ models.py:

class VideoFile(models.Model):
    show = models.ForeignKey(Show, blank=True, null=True)
    name = models.CharField(max_length=1024, blank=True)
    size = models.IntegerField(blank=True, null=True)
    ctime = models.DateTimeField(blank=True, null=True)
Run Code Online (Sandbox Code Playgroud)

电影/ models.py:

class VideoFile(models.Model):
    movie = models.ForeignKey(Movie, blank=True, null=True)
    name = models.CharField(max_length=1024, blank=True)
    size = models.IntegerField(blank=True, null=True)
    ctime = models.DateTimeField(blank=True, null=True)
Run Code Online (Sandbox Code Playgroud)

后:

因为两个videofile对象是如此相似,所以我想摆脱重复并在一个名为media的单独应用程序中创建一个新模型,该应用程序包含一个通用的VideoFile类并使用继承来扩展它:

媒体/ models.py:

class VideoFile(models.Model):
    name = models.CharField(max_length=1024, blank=True)
    size = models.IntegerField(blank=True, null=True)
    ctime = models.DateTimeField(blank=True, null=True)
Run Code Online (Sandbox Code Playgroud)

电视/ models.py:

class VideoFile(media.models.VideoFile):
    show = models.ForeignKey(Show, blank=True, null=True)
Run Code Online (Sandbox Code Playgroud)

电影/ models.py:

class VideoFile(media.models.VideoFile):
    movie = …
Run Code Online (Sandbox Code Playgroud)

python migration django django-south

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

Django方式做条件格式化

在Django中进行条件格式化的正确方法是什么?

我有一个包含日期字段的模型,我想显示一个记录列表,但是根据该日期字段的值为行着色.例如,匹配今天我希望为黄色的日期的记录,在今天之前我想要绿色的记录和在我想要红色之后的记录.

在Django的某个地方,您需要进行比较,将当前日期与记录中的日期进行比较.

我可以看到可以进行比较的三个不同的地方:

  1. 向我的模型添加一个方法,例如status(),它返回'past','present','future',然后在模板中使用它来为行着色.
  2. 在视图中,不是将查询集返回给模板,而是预处理列表并比较每个记录,构建一个包含要在模板中使用的"过去","当前"和"未来"值的新dict
  3. 创建一个用于进行比较的新模板标记.

以下哪种方法是正确的Django方式呢?听起来像条件​​格式化会经常出现,并且由于您无法在模板中进行任意比较,因此需要一些其他解决方案.

这同样适用于更简单的格式规则,例如,如果我想显示学生成绩列表,我想让那些高于80%绿色和低于30%红色的那些.

python django formatting django-templates

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

在进行subversion提交之前,如何清理源代码?

有时,当您使用本地副本时,可能存储了您不希望提交的配置设置,并且忽略该文件是不切实际的,因为它还包含特定于应用程序的设置.

例如,Django settings.py文件包含数据库连接详细信息和项目设置,例如要加载的应用程序.

有没有办法在提交时清理这些类型的文件?有没有办法在结账时恢复自己的本地设置?

我目前的环境是Linux和命令行SubVersion

svn

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

如何将具有命名组的Perl正则表达式转换为Python?

我试图将我在Video :: Filename Perl模块中找到的以下Perl正则表达式转换为Python 2.5.4正则表达式来解析文件名

# Perl > v5.10
re => '^(?:(?<name>.*?)[\/\s._-]*)?(?<openb>\[)?(?<season>\d{1,2})[x\/](?<episode>\d{1,2})(?:-(?:\k<season>x)?(?<endep>\d{1,2}))?(?(<openb>)\])(?:[\s._-]*(?<epname>[^\/]+?))?$',
Run Code Online (Sandbox Code Playgroud)

我也想使用命名组,我在Python中知道命名组的正则表达式扩展是不同的,但我对语法不是100%肯定.

这是我试过的:

# Python (not working)
r = re.compile(r'^(?:(?P<name>.*?)[\/\s._-]*)?(?P<openb>\[)?(?P<season>\d{1,2})[x\/](?P<episode>\d{1,2})(?:-(?:\kP<season>x)?(?P<endep>\d{1,2}))?(?(P<openb>)\])(?:[\s._-]*(?P<epname>[^\/]+?))?$')
Run Code Online (Sandbox Code Playgroud)

我得到的错误:

   raise error, v # invalid expression
sre_constants.error: bad character in group name
Run Code Online (Sandbox Code Playgroud)

例如,这个我设法转换,它的工作原理.但上面的那个我似乎无法做对.我在Python中遇到了编译错误.

# Perl:
re => '^(?:(?<name>.*?)[\/\s._-]+)?(?:s|se|season|series)[\s._-]?(?<season>\d{1,2})[x\/\s._-]*(?:e|ep|episode|[\/\s._-]+)[\s._-]?(?<episode>\d{1,2})(?:-?(?:(?:e|ep)[\s._]*)?(?<endep>\d{1,2}))?(?:[\s._]?(?:p|part)[\s._]?(?<part>\d+))?(?<subep>[a-z])?(?:[\/\s._-]*(?<epname>[^\/]+?))?$',

# Python (working):
r = re.compile(r'^(?:(?P<name>.*?)[\/\s._-]+)?(?:s|se|season|series)[\s._-]?(?P<season>\d{1,2})[x\/\s._-]*(?:e|ep|episode|[\/\s._-]+)[\s._-]?(?P<episode>\d{1,2})(?:-?(?:(?:e|ep)[\s._]*)?(?P<endep>\d{1,2}))?(?:[\s._]?(?:p|part)[\s._]?(?P<part>\d+))?(?P<subep>[a-z])?(?:[\/\s._-]*(?P<epname>[^\/]+?))?$')
Run Code Online (Sandbox Code Playgroud)

我不知道从哪里开始寻找.

python regex perl

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

从Excel工作表中获取数据

如何将Excel工作表中的数据加载到我的Django应用程序中?我正在使用数据库PosgreSQL作为数据库.

我想以编程方式执行此操作.客户希望每周在网站上加载两个不同的列表,他们不希望在管理部分中执行此操作,他们只想从Excel工作表中加载列表.请帮忙,因为我在这里有点新鲜.

python django postgresql excel

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

远程访问Django ORM

也许我首先应该对我想完成的事情有所了解,因为可能会有更好的解决方案。

我有一个使用Django的网络应用程序,用于管理媒体(录制的电视,电影等)。该Web应用程序允许您将元数据添加到媒体中,例如您在每个用户的基础上观看的内容,还可以执行搜索并与Web资源同步以获取有关放映时间等信息。

实际的媒体文件位于文件服务器上,Django系统可以访问该文件服务器来扫描和更新其数据库。

我也有几个媒体播放系统,它们可以播放文件服务器中的媒体文件,并且前端使用Python编写。

该前端需要元数据来显示用户界面。当前,我正在使用Django创建以XML格式显示数据的视图,然后使用urllib2在前端检索页面。

我真正想要的是一种访问Django ORM的方法,该方法可以直接从媒体播放系统管理媒体元数据,这样我就可以拥有完整的ORM。

所以,最后回到我的问题。有没有办法以独立方式远程访问ORM?我想我可以将模型复制到前端系统,然后将它们全部直接访问数据库,但是必须有一个更优雅的解决方案。

django orm

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