Tag: django

为什么django的prefetch_related()只能和all()而不是filter()一起工作?

假设我有这个模型: class PhotoAlbum(models.Model): title = models.CharField(max_length=128) author = models.CharField(max_length=128) class Photo(models.Model): album = models.ForeignKey('PhotoAlbum') format = models.IntegerField() 现在,如果我想有效地查看专辑子集中的照片子集。 我这样做: someAlbums = PhotoAlbum.objects.filter(author="Davey Jones").prefetch_related("photo_set") for a in someAlbums: somePhotos = a.photo_set.all() 这只有两个查询,这是我所期望的(一个拿到相册,然后像`SELECT * IN photos WHERE photoalbum_id IN()。 一切都很好。 但是,如果我这样做: someAlbums = PhotoAlbum.objects.filter(author="Davey Jones").prefetch_related("photo_set") for a in someAlbums: somePhotos = a.photo_set.filter(format=1) 然后它用WHERE format = 1做了大量的查询! 我做错了什么或是Django不够聪明,意识到它已经提取所有的照片,并可以在Python中过滤它们? […]

如何激活PyCharmterminal内的virtualenv?

我已经build立了PyCharm,创build了我的virtualenv(通过虚拟env命令,或直接在PyCharm中),并激活该环境作为我的解释器。 一切正常。 但是,如果我使用“工具,打开terminal”打开terminal,则提供的shell提示符不会使用虚拟env; 我仍然需要在该terminal中使用source ~/envs/someenv/bin/activate来激活它。 另一种方法是在shell中激活环境,并从该环境运行PyCharm。 这是“可行的”,但相当丑陋,而且意味着如果从PyCharm切换环境或项目,我会遇到大问题:我现在正在使用完全错误的环境。 有没有其他的,更简单的方法有“工具,打开terminal”自动激活虚拟环境?

用Django在两个date之间select

我正在寻找使用Djangoselectdate之间的查询。 我知道如何用原始SQL很容易地做到这一点,但是怎么才能用Django ORM来实现呢? 这是我想在查询中添加30天之间的date: start_date = datetime.datetime.now() + datetime.timedelta(-30) context[self.varname] = self.model._default_manager.filter( current_issue__isnull=True ).live().order_by('-created_at')

自定义/删除Djangoselect框空白选项

我正在使用Django 1.0.2。 我写了一个由Model支持的ModelForm。 这个模型有一个ForeignKey,其中blank = False。 当Django为这个表单生成HTML时,它会为ForeignKey引用的表中的每一行创build一个select框。 它还会在列表顶部创build一个没有值的选项,并显示为一系列破折号: <option value="">———</option> 我想知道的是: 从select框中删除这个自动生成选项的最简洁的方法是什么? 什么是最简洁的方式来定制它,使其显示为: <option value="">Select Item</option> 在寻找解决scheme时,我遇到了Django票据4653 ,这给我的印象是,其他人有同样的问题,Django的默认行为可能已被修改。 这张票已经一年多了,所以我希望有一个更清洁的方式来完成这些事情。 谢谢你的帮助, 杰夫 编辑:我已经这样configurationForeignKey字段: verb = models.ForeignKey(Verb, blank=False, default=get_default_verb) 这确实设置了默认值,以便它不再是空的/破折号选项,但不幸的是,它似乎并没有解决我的任何一个问题。 也就是说,空/破折号选项仍然出现在列表中。

我怎样才能得到一个favicon显示在我的Django应用程序?

我只想把favicon.ico放在我的staticfiles目录下,然后让它显示在我的应用程序中。 我怎样才能做到这一点? 我把favicon.ico文件放在我的staticfiles目录下,但是没有显示出来,我在我的日志里看到这个: 127.0.0.1 – – [21/Feb/2014 10:10:53] "GET /favicon.ico HTTP/1.1" 404 – 如果我去http://localhost:8000/static/favicon.ico ,我可以看到图标。

更新django数据库以反映现有模型的变化

我已经定义了一个模型,并通过manager.py syncdb创build了相关的数据库。 现在,我已经添加了一些字段到模型,我再次尝试syncdb ,但没有输出显示。 试图从我的模板中访问这些新的领域,我得到一个“没有这样的列”exception,导致我相信syncdb并没有实际更新数据库。 这里有什么正确的命令?

无法find区域path来存储文件__init__.py的翻译

我正在尝试翻译一个Django应用程序。 我在模板中创build了一些带有{% trans %}string。 但是,当我在我的应用程序文件夹中执行以下命令时,我收到一条错误消息: $ django-admin.py makemessages -l fr CommandError: Unable to find a locale path to store translations for file __init__.py` 我做错了什么?

我可以在Django模型中使外键字段是可选的吗?

我有这个代码 subject = models.ForeignKey(subjects) location = models.ForeignKey(location) publisher = models.ForeignKey(publisher) 我并不总是有三种价值的书籍。 所以有时如果我不知道主题或位置,或出版商。 然后我想让他们空着 但是,如果我有,那么我需要select框来select。 这是可能的吗?

在Django中添加新的自定义权限

我在我的Django模型中使用自定义权限,如下所示: class T21Turma(models.Model): class Meta: permissions = (("can_view_boletim", "Can view boletim"), ("can_view_mensalidades", "Can view mensalidades"),) 问题是,当我添加一个权限的列表,它不会被添加到auth_permission表,当我运行syncdb。 我究竟做错了什么。 如果它有任何区别,我正在使用南进行数据库迁移。

Django基于类的视图:如何将其他parameter passing给as_view方法?

我有一个自定义的基于类的视图 # myapp/views.py from django.views.generic import * class MyView(DetailView): template_name = 'detail.html' model = MyModel def get_object(self, queryset=None): return queryset.get(slug=self.slug) 我想要像这样传入slug参数(或其他参数) MyView.as_view(slug='hello_world') 我是否需要重写任何可以执行此操作的方法?