相关疑难解决方法(0)

如何为Django管理模型添加实例表单设置初始数据?

在显示表单之前,如何在自动生成的表单中设置字段的初始值以添加Django模型实例?我正在使用Django 1.3.1.

我的模型如下:

class Foo(models.Model):
  title = models.CharField(max_length=50)
  description = models.TextField()
Run Code Online (Sandbox Code Playgroud)

而目前的管理形式真的没什么特别的

class FooAdmin(admin.ModelAdmin):
  ordering = ('title',)
Run Code Online (Sandbox Code Playgroud)

当我使用管理页面添加一个新的Foo实例时,我得到一个很好的表单,其中包含标题和描述的空字段.我想要的是描述字段是通过调用函数获得的模板设置的.

我目前最好的尝试是:

def get_default_content():
  return 'this is a template for a Foo description'

class FooAdminForm(django.forms.ModelForm):

  class Meta:
      model = Foo

  def __init__(self, *args, **kwargs):
      kwargs['initial'].update({'description': get_default_content()})
      super(FooAdminForm, self).__init__(self, *args, **kwargs)

class FooAdmin(admin.ModelAdmin):
  ordering = ('title',)
  form = FooAdminForm
Run Code Online (Sandbox Code Playgroud)

但如果我尝试这个,我得到这个Django错误:

AttributeError at /admin/bar/foo/add/ 
   'FooForm' object has no attribute 'get'
Request Method: GET
Request URL:    http://localhost:8000/admin/bar/foo/add/
Django Version: 1.3.1
Exception Type: AttributeError
Exception Value:    'FooForm' …
Run Code Online (Sandbox Code Playgroud)

forms django model admin

19
推荐指数
3
解决办法
3万
查看次数

如何限制Django raw_id_field的ForeignKey选择

当使用raw_id_fields选项显示时,如何限制Django管理员中ForeignKey字段的显示选项?

当渲染为选择框时,可以很容易地定义自定义ModelForm,以便根据需要选择该字段的queryset值.但是,使用raw_id_fields呈现时,此查询集似乎完全被忽略.它生成一个指向ForeignKey模型的链接,允许您通过弹出窗口从该模型中选择任何记录.您仍然可以通过自定义URL来过滤这些值,但我找不到通过ModelAdmin执行此操作的方法.

python django django-admin

12
推荐指数
4
解决办法
5193
查看次数

django admin从GET参数"添加页面"初始日期时间

我想创建一个链接,打开一个模型的django admin添加页面,其中一些字段已预填.

我检查了可以将参数添加到添加表单的GET字典中,如下所示:

<a href='/admin/myapp/mymodel/add?name=John'>add new mymodel with name John</a>
Run Code Online (Sandbox Code Playgroud)

(实际上我得到了{%url'admin:myapp_mymodel_add'%}的网址,但这只是为了明确).

现在,这适用于数值,文本值和外键.但是DateTime字段呢?当我尝试通过这样的字段时(我尝试了许多格式,例如"2014-05-09 10:10:00")我总是得到一个"服务器错误"抱怨:

'unicode'对象没有属性'date'

在代码行中:

解压缩中的django/forms/widgets.py,第902行

 def decompress(self, value):
        if value:
            value = to_current_timezone(value)
            return [value.date(), value.time().replace(microsecond=0)] ...
        return [None, None]
Run Code Online (Sandbox Code Playgroud)

其中变量"value"具有我传递给URL的值...

问题1.我认为服务器代码不应该根据用户传递的值引发异常...这不是django库中的错误吗?

问题2.如何解决我的问题,即通过GET参数将初始日期时间传递给模型的管理"添加"页面?

django django-admin

6
推荐指数
1
解决办法
1716
查看次数

Django Admin:当我点击外键旁边的添加按钮(+)时,想要预填充一些字段

在Django Admin中,当我单击下拉列表旁边的添加(+)按钮时,我想使用当前记录中的数据来填充外键记录的字段.

例如,我正在查看X的实例,其中包含a,b和c的字段以及外键Y.Y还包含a,b和c的字段,因此当我单击"添加"按钮时在X实例中,我希望使用X实例中的值填充新Y实例的a,b和c字段.

显然,如果我只是在管理员中添加"添加新Y",这些字段就不会预先填充!

我搜索了一下但没有用!

有人有成功吗?

(我在Python 2.6中使用django 1.3;我认为这里不需要任何代码片段.)

django-admin

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

Django admin:如何从GET变量中填充新对象?

在Django的管理员中,我了解了如何使用GET变量/admin/app/model/add?title=lol设置“添加对象”表单的字段(例如,将“标题”字段设置为“大声笑”)。

但是,我希望能够做一些事情,/admin/app/model/add?key=18并从另一个模型的实例中为我的字段加载默认数据。理想情况下,我还希望能够对填充表单的值进行一些处理。我该怎么做呢?

django django-admin

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

标签 统计

django ×4

django-admin ×4

admin ×1

forms ×1

model ×1

python ×1