我喜欢使用 GUI 应用程序来设计使用 ERD 的数据库。目前我正在使用免费的MySQLWorkbench的 EER 图表。
一旦我喜欢 ERD 的外观,我就在 MySQLWorkbench 中对 ERD 进行正向工程以创建实际的数据库。然后,我使用逆向工程将 MySQL 数据库内省django-admin.py inspectdb到Django 的 Python 片段代码的输出中。models.py
但随后我必须获取inspectdb输出并根据我的喜好手动编辑它。我真的不喜欢做的一个特殊部分是从多对多关系中手动消除每个连接表。
是否有专门为 Django 设计的好的(最好是免费的)GUI ERD 设计程序?
本文介绍如何从版本2中的特定频道获取所有上传的视频,但我无法弄清楚如何使用版本3.
可能吗?大多数版本3文章只谈论搜索.
我使用Vim插件ack.vim,但我不明白为什么命令是:Ack用大写的"A"(有点烦人持有shift).
是否有可能将其重新映射到:ack?
我对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.html和polls/detail.html,polls/index.html和polls/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) 有没有更好的方法来编写这段代码?我知道这很简单,但我写它的方式似乎很重复.
我不需要寻找一行天才代码,只是其他一些可读的有用替代品.
提前致谢!
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.floor和self.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) 我阅读了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) 我注意到默认的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) 从这个问题我想从常规转换我的表单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.所以我想做点什么 …
我有以下代码:
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) 如何删除名称以doors_?开头的所有表格?我可以使用drop table命令执行某种正则表达式吗?
我不喜欢编写自定义脚本,但欢迎所有解决方案.谢谢!
python ×5
django ×3
coding-style ×1
database ×1
datetime ×1
django-forms ×1
erd ×1
logging ×1
macvim ×1
postgresql ×1
sql ×1
stdout ×1
subprocess ×1
vim ×1
vim-plugin ×1
youtube ×1
youtube-api ×1