如何在交互式shell中导入自定义模板标记或过滤器以查看一切是否正常?
我有两台机器表现不同,我不知道如何进行一些调试.
在生产机器上我无法加载模板过滤器,我收到错误"找不到模板库".在本地机器上一切正常.
我正在 django shell API 中导入模型,但出现以下错误。它是如何发生的:
python manage.py shell
from .models import Device
Run Code Online (Sandbox Code Playgroud)
我得到:
File "<console>", line 1, in <module>
KeyError: "'__name__' not in globals"
我正在Eclipse中使用PyDev开发一个Django项目.有一段时间,PyDev的Django Shell运作良好.现在,它没有:
>>> import sys; print('%s %s' % (sys.executable or sys.platform, sys.version))
C:\Python26\python.exe 2.6.4 (r264:75708, Oct 26 2009, 08:23:19) [MSC v.1500 32 bit (Intel)]
>>>
>>> from django.core import management;import mysite.settings as settings;management.setup_environ(settings)
Traceback (most recent call last):
File "<console>", line 1, in <module>
ImportError: No module named mysite.settings
>>>
Run Code Online (Sandbox Code Playgroud)
开发服务器运行得很好.我能做错什么?
模型模块也明显缺席:
>>> import mysite.myapp.models
Traceback (most recent call last):
File "<console>", line 1, in <module>
ImportError: No module named mysite.myapp.models
Run Code Online (Sandbox Code Playgroud)
在正常的命令行上,在PyDev之外,shell工作正常.
为什么会发生这种情况?
我有这个Django模型(来自Django CMS):
class Placeholder(models.Model):
slot = models.CharField(_("slot"), max_length=50, db_index=True)
default_width = models.PositiveSmallIntegerField(_("width"), null=True)
Run Code Online (Sandbox Code Playgroud)
我想删除带有重复'slot'值的Placeholder对象,只保留每个对象的第一个并删除其他对象.
如何编写执行此操作的查询(使用Django QuerySet API)?
在python调试器或django shell中创建一行for循环很容易:
>>>> for x in (1,2,3,4):print(x);
>>>> for x in Obj.objects.all():something(x);
Run Code Online (Sandbox Code Playgroud)
但是我怎么能在那里得到第二个for循环呢?
>>>> for x in (1,2,3,4):print x;for y in (5,6):print x,y;
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
我很在意,因为在交互式工作时对前一个命令进行向上箭头编辑很好(这不是尝试在任何其他上下文中使用单行命令).
注意:"打印"只是一个例子.在实际使用中,我会迭代对象或执行其他编程或调试任务,例如'for s in Section.objects.all():for s in s.children():print j'.我使用的是Python 2.7.
我有一个玩过三个联赛的玩家实例。在玩家模型类中,我设置了许多具有联赛类的字段。
现在我想将所有 3 个联赛添加到 Django shell 中的玩家实例中。
class League(models.Model):
league = models.CharField(max_length=20)
def __str__(self):
return self.league
class Player(models.Model):
name = models.CharField(max_length=30)
league_played = models.ManyToManyField(League, default='Unknown')
Run Code Online (Sandbox Code Playgroud)