Questions tagged «django»

Django是使用Python编写的开放源代码服务器端Web应用程序框架。它旨在减少创建复杂的数据驱动的网站和Web应用程序所需的工作量,并特别注重更少的代码,无冗余以及比隐式更显式。

12
用于重命名模型和关系字段的Django迁移策略
我打算重命名现有Django项目中的多个模型,在该项目中,还有许多其他模型与我要重命名的模型具有外键关系。我相当确定这将需要多次迁移,但是我不确定确切的过程。 假设我从Django应用程序中的以下模型开始myapp: class Foo(models.Model): name = models.CharField(unique=True, max_length=32) description = models.TextField(null=True, blank=True) class AnotherModel(models.Model): foo = models.ForeignKey(Foo) is_awesome = models.BooleanField() class YetAnotherModel(models.Model): foo = models.ForeignKey(Foo) is_ridonkulous = models.BooleanField() 我想重命名该Foo模型,因为该名称实际上没有意义,并且会导致代码混乱,并且Bar会使名称更清晰。 根据我在Django开发文档中阅读的内容,我假设采用以下迁移策略: 第1步 修改models.py: class Bar(models.Model): # <-- changed model name name = models.CharField(unique=True, max_length=32) description = models.TextField(null=True, blank=True) class AnotherModel(models.Model): foo …

2
Django模型表单对象的自动创建日期?
自动设置对象创建日期以及记录该对象上次更新时间的字段的最佳方法是什么? models.py: created_at = models.DateTimeField(False, True, editable=False) updated_at = models.DateTimeField(True, True, editable=False) views.py: if request.method == 'POST': form = MyForm(request.POST) if form.is_valid(): obj = form.save(commit=False) obj.user = request.user obj.save() return HttpResponseRedirect('obj_list') 我得到错误: objects_object.created_at may not be NULL 我是否必须自己手动设置此值?我以为那是传递给参数的重点DateTimeField(或者它们只是默认值,由于我已经设置了editable=False它们,所以它们不会在表单上显示,因此不会在请求中提交,因此也不会得到放入表格?)。 最好的方法是什么?一种__init__方法是什么?

12
Django将自定义表单参数传递给Formset
这在Django 1.9中用form_kwargs修复。 我有一个看起来像这样的Django表单: class ServiceForm(forms.Form): option = forms.ModelChoiceField(queryset=ServiceOption.objects.none()) rate = forms.DecimalField(widget=custom_widgets.SmallField()) units = forms.IntegerField(min_value=1, widget=custom_widgets.SmallField()) def __init__(self, *args, **kwargs): affiliate = kwargs.pop('affiliate') super(ServiceForm, self).__init__(*args, **kwargs) self.fields["option"].queryset = ServiceOption.objects.filter(affiliate=affiliate) 我称这种形式是这样的: form = ServiceForm(affiliate=request.affiliate) request.affiliate登录用户在哪里。这按预期工作。 我的问题是我现在想将此单一表单转换为表单集。我不知道的是在创建表单集时如何将会员信息传递给各个表单。根据文档来制作一个表单集,我需要做这样的事情: ServiceFormSet = forms.formsets.formset_factory(ServiceForm, extra=3) 然后我需要这样创建它: formset = ServiceFormSet() 现在如何以这种方式将affiliate = request.affiliate传递给各个表单?

6
django的model.save()为什么不调用full_clean()?
我只是好奇是否有人知道,除非有理由将django的orm不保存在模型中,否则它不会在模型上调用“ full_clean”。 请注意,当您调用模型的save()方法时,不会自动调用full_clean()。若要为自己创建的模型运行一步模型验证,则需要手动调用它。 django的完整档案 (注意:报价已针对Django 1.6更新...之前的django文档也对ModelForms提出了警告。) 人们为什么不希望这种行为有充分的理由?我想如果您花时间向模型添加验证,则希望每次保存模型时都运行验证。 我知道如何使一切正常工作,我只是在寻找一种解释。


15
Django表单中的CSS样式
我想样式如下: forms.py: from django import forms class ContactForm(forms.Form): subject = forms.CharField(max_length=100) email = forms.EmailField(required=False) message = forms.CharField(widget=forms.Textarea) contact_form.html: <form action="" method="post"> <table> {{ form.as_table }} </table> <input type="submit" value="Submit"> </form> 例如,如何设置一个类或ID为subject,email,message以提供外部样式表到?
150 css  django  django-forms 

2
Django管理员中同一模型的多个ModelAdmins /视图
如何为同一个模型创建一个以上的ModelAdmin,每个ModelAdmin进行不同的自定义并链接到不同的URL? 假设我有一个称为Posts的Django模型。默认情况下,此模型的admin视图将列出所有Post对象。 我知道我可以通过设置变量(例如list_display)或queryset在ModelAdmin中重写方法来以各种方式自定义页面上显示的对象列表: class MyPostAdmin(admin.ModelAdmin): list_display = ('title', 'pub_date') def queryset(self, request): request_user = request.user return Post.objects.filter(author=request_user) admin.site.register(MyPostAdmin, Post) 默认情况下,可以通过URL访问/admin/myapp/post。但是我想拥有同一模型的多个视图/ ModelAdmins。例如,/admin/myapp/post将列出所有帖子对象,并/admin/myapp/myposts列出属于该用户的/admin/myapp/draftpost所有帖子,并可能列出尚未发布的所有帖子。(这些只是示例,我的实际用例更加复杂) 您不能为同一模型注册多个ModelAdmin(这将导致AlreadyRegistered异常)。理想情况下,我希望不将所有内容放入单个ModelAdmin类中并编写自己的“ urls”函数以根据URL返回不同的查询集来实现这一点。 我看了看Django的源代码,发现ModelAdmin.changelist_view在urls.py中可以包含这样的函数,但是我不确定它是如何工作的。 更新:我找到了一种实现自己想要的方式(见下文),但是我仍然想听听其他实现方式。

2
Django内容类型到底如何工作?
我真的很难理解Django内容类型的概念。感觉非常骇人听闻,并且最终与Python趋向于做事相反。话虽如此,如果我要使用Django,则必须在框架范围内进行工作。 所以我来这里想知道是否有人可以给出有关内容类型如何工作以及如何实现的实际例子。我评论过的几乎所有教程(大部分在博客上)都无法真正涵盖这个概念。他们似乎从Django文档遗忘的地方接手(似乎无处可去)。
148 python  django 

2
Django修复管理员复数
在新的dev django版本中,如何在管理网站上将某些型号名称从“类别”更改为“类别”?在旧版本中(没有管理站点和管理模型),您可以执行此操作; http://www.the-dig.com/blog/post/customize-plural-name-django-admin/ 但是-现在在基于模型管理的类中设置verbose_name_plural不会执行任何操作。有人遇到同样的问题吗?

12
如何在我的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,我可以看到该图标。
148 django  favicon 

5
Django Admin-禁用特定模型的“添加”操作
我有一个包含很多模型和表格的django网站。我有许多自定义表单和表单集以及inlineformsets和自定义验证和自定义查询集。因此,添加模型操作取决于需要其他内容的表单,并且Django管理员中的“添加模型”通过自定义查询集中的500进行操作。 无论如何,对于某些型号,是否禁用“添加$ MODEL”功能? 我想/admin/appname/modelname/add/给出一个404(或适当的“ goaway”错误消息),我不希望显示“ Add $ MODELNAME”按钮/admin/appname/modelname。 Django管理员提供了一种禁用管理员操作的方法(http://docs.djangoproject.com/en/dev/ref/contrib/admin/actions/#disabling-actions),但是此模型的唯一操作是“ delete_selected”。即,管理员操作仅作用于现有模型。有一些Django风格的方法来做到这一点吗?

7
Django REST框架:向ModelSerializer添加其他字段
我想序列化一个模型,但想包含一个附加字段,该字段要求在要序列化的模型实例上进行一些数据库查找: class FooSerializer(serializers.ModelSerializer): my_field = ... # result of some database queries on the input Foo object class Meta: model = Foo fields = ('id', 'name', 'myfield') 什么是正确的方法?我看到您可以将额外的“上下文”传递给序列化程序,是在上下文字典中传递附加字段的正确答案吗?使用这种方法,获取我需要的字段的逻辑不会与序列化程序定义完全独立,这是理想的,因为每个序列化实例都需要my_field。在DRF序列化程序文档的其他地方,它表示 “额外字段可以对应于模型上的任何属性或可调用的属性”。我所说的是多余的领域吗?我应该在Foo的模型定义中定义一个返回my_field值的函数,并在序列化程序中将my_field连接到该可调用项吗?看起来像什么? 在此先感谢您,如有必要,我们很乐意澄清问题。


13
Django过滤器与获取单个对象?
我正在与一些同事就此进行辩论。当您只期望一个对象时,是否有一种在Django中检索对象的首选方法? 两种明显的方法是: try: obj = MyModel.objects.get(id=1) except MyModel.DoesNotExist: # We have no object! Do something... pass 和: objs = MyModel.objects.filter(id=1) if len(objs) == 1: obj = objs[0] else: # We have no object! Do something... pass 第一种方法在行为上似乎更正确,但是在控制流中使用异常,这可能会带来一些开销。第二个是回旋处,但永远不会引发例外。 有什么想法是可取的?哪个更有效?

10
由于egg_info错误而无法通过pip安装
无论我尝试安装哪个软件包,都会出现此错误: error: invalid command 'egg_info' ---------------------------------------- Cleaning up... Command python setup.py egg_info failed with error code 1 in c:\users\zorpix\appdata\local\temp\pip-build-Zorpix\virtualenv Storing complete log in C:\Users\Zorpix\pip\pip.log 我看到了这个问题,但答案对我不起作用。我可以安装分发软件包,到目前为止,它是唯一可以安装的软件包,但是它不能解决问题,因为在尝试安装另一个软件包时,egg_info错误立即返回。我对此感到非常沮丧,因为我在任何地方都找不到任何帮助。我之前也已经安装了django和pip以及所有内容,但是我必须重新安装所有内容,现在它无法正常工作。任何帮助将不胜感激。 这是它说存储的日志: ------------------------------------------------------------ C:\Python27\Scripts\pip-script.py run on 07/26/13 11:30:42 Downloading/unpacking virtualenv Getting page https://pypi.python.org/simple/virtualenv/ URLs to search for versions for virtualenv: * https://pypi.python.org/simple/virtualenv/ Analyzing links from page …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.