小编hob*_*es3的帖子

我应该如何为 Django 设计数据库?

我喜欢使用 GUI 应用程序来设计使用 ERD 的数据库。目前我正在使用免费的MySQLWorkbench的 EER 图表。

一旦我喜欢 ERD 的外观,我就在 MySQLWorkbench 中对 ERD 进行正向工程以创建实际的数据库。然后,我使用逆向工程将 MySQL 数据库内省django-admin.py inspectdb到Django 的 Python 片段代码的输出中。models.py

但随后我必须获取inspectdb输出并根据我的喜好手动编辑它。我真的不喜欢做的一个特殊部分是从多对多关系中手动消除每个连接表。

是否有专门为 Django 设计的好的(最好是免费的)GUI ERD 设计程序?

sql database django erd

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

如何使用API​​ v3列出YouTube频道的所有上传视频(网址)?

本文介绍如何从版本2中的特定频道获取所有上传的视频,但我无法弄清楚如何使用版本3.

可能吗?大多数版本3文章只谈论搜索.

youtube youtube-api

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

是否可以在Vim中重新映射Ex命令(remap:Ack to:ack)?

我使用Vim插件ack.vim,但我不明白为什么命令是:Ack用大写的"A"(有点烦人持有shift).

是否有可能将其重新映射到:ack

vim macvim vim-plugin

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

从"Django Tutorial:Todo List App"导入错误

我对Django教程的这一部分很困惑.它说的是复制整个admin模板dbe/templates,但应该是什么样的完整路径以及我想创建哪些文件夹?

我正在运行Mac OS X,我的todo应用程序位于,/Users/hobbes3/Sites/mysite/todo/我的完整Django路径是/usr/local/lib/python2.7/site-packges/django/.

我还把模板放在了/Users/hobbes3/Sites/myDjango/templates.此文件夹中我有admin/base_site.htmlpolls/detail.html,polls/index.htmlpolls/results.html.民意调查应用程序是从Django官方教程创建的.我的民意调查应用程序副本工作正常.

我运行服务器时遇到的错误是python manage.py runserver,我去了http://127.0.0.1:8000/admin/

ImportError at /admin/

No module named dbe.todo.models

Request Method:     GET
Request URL:    http://127.0.0.1:8000/admin/
Django Version:     1.3.1
Exception Type:     ImportError
Exception Value:    

No module named dbe.todo.models

Exception Location:     /Users/hobbes3/Sites/mysite/todo/admin.py in <module>, line 1
Python Executable:  /usr/local/bin/python
Python Version:     2.7.2
Python Path:    

['/Users/hobbes3/Sites/mysite',
 '/usr/local/Cellar/python/2.7.2/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg',
 '/usr/local/Cellar/python/2.7.2/lib/python2.7/site-packages/MySQL_python-1.2.3-py2.7-macosx-10.4-x86_64.egg',
 '/usr/local/Cellar/python/2.7.2/lib/python27.zip',
 '/usr/local/Cellar/python/2.7.2/lib/python2.7',
 '/usr/local/Cellar/python/2.7.2/lib/python2.7/plat-darwin',
 '/usr/local/Cellar/python/2.7.2/lib/python2.7/plat-mac', …
Run Code Online (Sandbox Code Playgroud)

django

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

Python:使用join编写if-then块的更好方法?

有没有更好的方法来编写这段代码?我知道这很简单,但我写它的方式似乎很重复.

我不需要寻找一行天才代码,只是其他一些可读的有用替代品.

提前致谢!

def __unicode__( self ):
    location = []

    if self.room != None:
        location.append( self.room )
    if self.floor != None:
        location.append( self.floor )
    if self.building != None:
        location.append( self.building )

    location.append( self.property )

    return ", ".join( location )
Run Code Online (Sandbox Code Playgroud)

self.property始终设置,这不是真正的self.room,self.floorself.building.顺便说一句,这是models.pyDjango代码的一部分,万一有人想知道.

附带问题:使用property变量名称是个坏主意吗?我注意到property在语法下突出显示,但我查了一下,它不是 Python保留字.

这是完整的课程:

class Location( models.Model ):
    def __unicode__( self ):
        location = []

        if self.room != None:
            location.append( self.room )
        if self.floor != None: …
Run Code Online (Sandbox Code Playgroud)

python

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

为了获得良好的风格,我应该在 Python 中的方法之前定义内部类,反之亦然?

我阅读了PEP 8: Style Guide for Python code,但我找不到关于我应该在类中定义内部类或方法的顺序的任何内容。

例如,我应该做

class CustomClass(BaseClass):
    class Meta:
        foo = self.bar

    def foo_bar(self):
        return False

    bar = 1
Run Code Online (Sandbox Code Playgroud)

或者

class CustomClass(BaseClass):
    def foo_bar(self):
        return False

    class Meta:
        foo = self.bar

    bar = 1
Run Code Online (Sandbox Code Playgroud)

?

编辑:这是一个 Django 源代码。他们实际上定义了fields, then inner classes, then methods

class LogEntry(models.Model):
    action_time = models.DateTimeField(_('action time'), auto_now=True)
    user = models.ForeignKey(User)
    content_type = models.ForeignKey(ContentType, blank=True, null=True)
    object_id = models.TextField(_('object id'), blank=True, null=True)
    object_repr = models.CharField(_('object repr'), max_length=200)
    action_flag …
Run Code Online (Sandbox Code Playgroud)

python coding-style inner-classes

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

有没有办法从Python的日期时间获取Django的日期和时间的默认字符串?

我注意到默认的Django的datetime作为字符串看起来像这样(来自模板):

April 4, 2012, 6 a.m.
April 14, 2012, 12:06 p.m.
April 14, 2012, midnight
April 14, 2012, noon
April 14, 2012, 6:02 a.m.
Run Code Online (Sandbox Code Playgroud)

请注意日期或时间中没有尾随零.Django也消除了:00分钟,并且还使用字符串"noon"和"midnight"而不是等效的数字时间.

我可以不进行编码的一堆最接近if- elif声明是这样的

# I'm using Django 1.4 with timezone support.
# timezone.now() is the same as `datetime.now()` but it's timezone "aware".
timezone.now().strftime('%B %d, %Y, %I:%M %p').replace( 'AM', 'a.m.' ).replace( 'PM', 'p.m.' )
Run Code Online (Sandbox Code Playgroud)

但这会产生以下结果(使用上面相同的例子)

April 04, 2012, 06:00 a.m.
April 14, 2012, 12:06 p.m.
April 14, 2012, 12:00 a.m.
April 14, 2012, 12:00 …
Run Code Online (Sandbox Code Playgroud)

python django datetime

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

如何在Django中以编程方式设置ModelForm中的字段?

这个问题我想从常规转换我的表单Form,ModelForm所以我可以利用instance参数ModelForm.

这是我目前的表单代码:

class OrderDetailForm(forms.Form):
    def __init__(
        self,
        user,
        can_edit_work_type=None,
        can_edit_vendor=None,
        can_edit_note=None,
        *args,
        **kwargs
    ):
        super(OrderDetailForm, self).__init__(*args, **kwargs)

        if can_edit_work_type:
            self.fields['work_type'] = forms.ChoiceField(choices=Order.WORK_TYPE_CHOICES)
        if can_edit_vendor:
            self.fields['vendor'] = forms.ModelChoiceField(
                queryset=Vendor.objects.all(),
                empty_label="Choose a vendor",
            )
        if can_edit_note:
            self.fields['note'] = forms.CharField(widget=forms.Textarea)

    def clean(self):
        super(OrderDetailForm, self).clean()

        if 'note' in self.cleaned_data:
            if len(self.cleaned_data['note']) < 50:
                self._errors['note'] = self.error_class([u"Please enter a longer note."])

                del self.cleaned_data['note']

        return self.cleaned_data
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我有一些if声明可以确定字段是否在表单中显示(逻辑上它表示某些用户只能编辑字段的某些部分).

我该怎么做ModelForm?我理解fields为一个元组,所以不能像我一样添加Form.所以我想做点什么 …

python django-forms

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

从check_output中抑制stdout,但将其写入日志

我有以下代码:

try:
    subprocess.check_output(command.split())
except subprocess.CalledProcessError as e:
    count_failure.increment()
    logger.error(e.__dict__)
    return
Run Code Online (Sandbox Code Playgroud)

如果check_output()失败,那么我想从stdout中删除该消息,但将其写入我的logger.

现在stdout错误消息搞砸了我的tqdm进度条:

[hobbes3@hobbes3 bin]$ ./mass_index.py
34%|??????????????????????????????????????????                                                                                | 13/38 [00:00<00:14,  1.75it/s]
unable to open file: path='/mnt/data/samples/irs_990/foo.xml' error='Permission denied'
100%|??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????| 38/38 [00:02<00:00,  5.96it/s]
Run Code Online (Sandbox Code Playgroud)

此外,实际消息Permission denied不存储在内部e.我e.__dict__唯一说的

{'returncode': 22, 'cmd': ['/opt/splunk/bin/splunk', 'add', 'oneshot', '/mnt/data/samples/irs_990/foo.xml', '-index', 'main', '-sourcetype', 'irs_990'], 'output': b'', 'stderr': None}
Run Code Online (Sandbox Code Playgroud)

python logging subprocess stdout

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

如何删除以常用词开头的psql(PostgreSQL交互式终端)中的所有表?

如何删除名称以doors_?开头的所有表格?我可以使用drop table命令执行某种正则表达式吗?

我不喜欢编写自定义脚本,但欢迎所有解决方案.谢谢!

postgresql

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