小编sch*_*eck的帖子

获取django模型的类名

我有一个django模型:

class Book(models.Model):
  [..]
Run Code Online (Sandbox Code Playgroud)

我希望将模型名称设为字符串:'Book'.当我试图这样做时:

Book.__class__.__name__
Run Code Online (Sandbox Code Playgroud)

它返回'ModelBase'.

任何的想法?

django django-models

98
推荐指数
6
解决办法
6万
查看次数

按属性过滤

是否可以按模型属性过滤Django查询集?

我的模型中有一个方法:

@property
def myproperty(self):
    [..]
Run Code Online (Sandbox Code Playgroud)

现在我想通过这个属性过滤,如:

MyModel.objects.filter(myproperty=[..])
Run Code Online (Sandbox Code Playgroud)

这有点可能吗?

python django orm

81
推荐指数
5
解决办法
4万
查看次数

Python函数指针

我有一个函数名存储在一个变量中,如下所示:

myvar = 'mypackage.mymodule.myfunction'
Run Code Online (Sandbox Code Playgroud)

而我现在想要像这样打电话给我

myvar(parameter1, parameter2)
Run Code Online (Sandbox Code Playgroud)

实现这一目标的最简单方法是什么?

python function-pointers

69
推荐指数
5
解决办法
10万
查看次数

Django模型:delete()未触发

我有一个模特:

class MyModel(models.Model):
 ...
    def save(self):
        print "saving"
        ...
    def delete(self):
        print "deleting"
        ...
Run Code Online (Sandbox Code Playgroud)

save() - 方法被触发,但delete()不是.我使用最新的svn-Version(Django 1.2版pre-alpha SVN-11593),关于http://www.djangoproject.com/documentation/models/save_delete_hooks/上的文档,这应该可行.有任何想法吗?

django django-models

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

捕获子进程输出

我了解到在Python中执行命令时,我应该使用子进程.我想要实现的是通过ffmpeg编码文件并观察程序输出直到文件完成.Ffmpeg将进度记录到stderr.

如果我尝试这样的事情:

child = subprocess.Popen(command, shell=True, stderr=subprocess.PIPE)
complete = False
while not complete:
    stderr = child.communicate()

    # Get progress
    print "Progress here later"
    if child.poll() is not None:
        complete = True
    time.sleep(2)
Run Code Online (Sandbox Code Playgroud)

调用child.communicate()并等待命令完成后,程序不会继续.还有其他方法可以跟随输出吗?

python subprocess

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

覆盖ModelForm中的初始值

在我的Django(1.2)项目中,我想在模型中预填充一个字段,但我的新值被忽略了.这是片段:

class ArtefactForm(ModelForm):
    material = CharField(widget=AutoCompleteWidget('material', force_selection=False))

    def __init__(self, *args, **kwargs):
        super(ArtefactForm, self).__init__(*args, **kwargs)
        self.fields['material'].initial = 'Test'
Run Code Online (Sandbox Code Playgroud)

我也试过self.base_fields,但没有效果:表格中始终显示数据库值.有任何想法吗?

python django django-forms

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

django admin/inline中的只读字段

我使用此代码段在我的管理后端中显示几个字段为readonly,但正如注释中所注意到的,它在stackinline/tabularinline上不起作用.有没有其他方法来实现这一目标?我有一个附加到模型的对象列表,只是想在模型的详细信息视图中显示它,而无法更改值.

django django-admin

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

Django 作为 S3 代理

我使用自定义字段“下载文件”扩展了 ModelAdmin,它是我的 Django 项目中 URL 的链接,例如:

http://www.myproject.com/downloads/1
Run Code Online (Sandbox Code Playgroud)

在那里,我想提供一个存储在 S3 存储桶中的文件。存储桶中的文件不是公开可读的,用户可能无法直接访问它。现在我想

  • 避免必须将文件加载到服务器内存中(这些是多 GB 文件)
  • 避免在服务器上有临时文件

理想的解决方案是让 django 充当代理,将 S3 块直接传输给用户。我使用 boto,但没有找到流式传输块的可能性。有任何想法吗?

谢谢。

django amazon-s3 django-admin boto amazon-web-services

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

从ModelForm中删除字段

我有一个简单的ModelForm:

class MyForm(ModelForm):

    def __init__(self, *args, **kwargs):
        super(MyForm, self).__init__(*args, **kwargs)
        del self.fields['name']
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我尝试从表单的字段列表中删除一个字段(该字段明确存在于模型中),但我得到一个例外:

TemplateSyntaxError at [..]

Caught an exception while rendering: "Key 'name' not found in Form"
Run Code Online (Sandbox Code Playgroud)

我没有写自定义表单,因此发生错误的模板是:

/templates/admin/includes/fieldset.html, error at line 4
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

- 更新 -

该问题仅出现在管理区域中.

- 更新2 -

也许跟踪转储提供了更多信息:

Original Traceback (most recent call last):
  File "/Library/Python/2.5/site-packages/django/template/debug.py", line 71, in render_node
    result = node.render(context)
  File "/Library/Python/2.5/site-packages/django/template/defaulttags.py", line 155, in render
    nodelist.append(node.render(context))
  File "/Library/Python/2.5/site-packages/django/template/defaulttags.py", line 239, in render
    value = bool_expr.resolve(context, True)
  File "/Library/Python/2.5/site-packages/django/template/__init__.py", line 546, in resolve …
Run Code Online (Sandbox Code Playgroud)

django

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

s3-put无法发送文件

我正在尝试使用s3-bash脚本将文件发送到amazon s3.

使用此命令:

./s3-put -T ./test2 -k <mykey> -s ./<mysecretkeyfile> /mybucketname
Run Code Online (Sandbox Code Playgroud)

导致:

<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>MalformedXML</Code><Message>The XML you provided was not well-formed or did not validate against our published schema</Message><RequestId>xxx</RequestId><HostId>xxx</HostId></Error>
Run Code Online (Sandbox Code Playgroud)

任何的想法?我只想通过bash发送文件.

amazon-s3 amazon-web-services

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