小编mac*_*guy的帖子

当指定的对象不存在时,如何从Django DetailView重定向?

所以,现在当我的DetailView子类没有使用PK(取自URL)找到对象时,我看到了404.html模板页面.我宁愿做的只是重定向到另一个URL.这是我的网址模式:

url(r'^(?P<pk>[0-9]+)/$', DeviceDetailView.as_view(
    template_name='devices/detail.html',
    queryset=Device.objects.all(),
    context_object_name="device",
)),
url(r'^$', FullListView.as_view(template_name='devices/devices.html',)),
Run Code Online (Sandbox Code Playgroud)

所以,如果我的url看起来像/ devices/8 /,它使用8作为主键.当数据库中存在8时,工作得很好.但是,当8不存在时,它将转到404页面.我宁愿它做的是去一个列表 - 事实上,当最后一个url列出FullListView时(当url看起来像/ devices/nonnumericstuff /时会发生这种情况).

看起来应该很容易,不是吗?我不希望所有的404都去那里,所以我不能使用handler404.

django detailview

9
推荐指数
2
解决办法
6335
查看次数

Django管理模板覆盖不在生产环境中工作

这个问题,我的管理员覆盖不在我的生产环境中工作,但它们在我的开发环境中(相同的django版本).我尝试在settings.py中重新排序INSTALLED_APPS元组而没有任何变化(是上面链接的问题的答案).这是我如何构建我的项目:

/WebDJ/ # project dir
    +devices # unrelated app, but it uses templates (see below)
    +sales
        __init__.py
        admin.py
        models.py  # has Customer and Transaction model classes
    +templates
        +admin
            +sales
                +Customer
                    change_form.html
                +Transaction
                    change_form.html
        +devices # lots of templates under here that work fine
        404.html
        500.html
Run Code Online (Sandbox Code Playgroud)

也:

TEMPLATE_DIRS = ('/WebDJ/templates',)
Run Code Online (Sandbox Code Playgroud)

在settings.py中设置.设备应用程序中的模板很好.什么没有加载是管理目录中的覆盖 - 所以Customer和Transaction的更改表单添加了一些额外的东西(覆盖"after_field_sets"块).

同样,它适用于我的开发环境(使用PyCharm),但不适用于我的生产环境.有任何想法吗?我真的很难过这个.

django overriding admin django-templates

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

尝试在管理表单上显示DateTimeField时出现Django异常

我有一个定义datetimefield的模型:

dateAdded = models.DateTimeField("Date Added", auto_now_add=True)
Run Code Online (Sandbox Code Playgroud)

在我的ModelAdmin子类中,我试图在以下字段集中显示该字段:

fieldsets = (
    (None, {
        'fields': (
            ("modelId", "altModelIds", "modelName", "dateAdded"),
            ("manufacturer", "protocol", "category"),
            ("versionAdded", "proOnly", "published", "discontinued"),
            "notes"
        )
    }),
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

FieldError: Unknown field(s) (dateAdded) specified for Device
Run Code Online (Sandbox Code Playgroud)

有趣的是,当我将它添加到list_display时:

list_display = ("modelName", "published", "modelId", "altModelIds", "manufacturer", "protocol", "category", "dateAdded")
Run Code Online (Sandbox Code Playgroud)

它工作正常.我确定我只是在做一些愚蠢的事情(我已经离开Django大约8个月了)但我无法弄明白.任何帮助,将不胜感激.

django django-models django-admin

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