相关疑难解决方法(0)

以自定义形式使用Django时间/日期小部件

如何使用默认管理员在自定义视图中使用的漂亮的JavaScript日期和时间小部件?

我查看了Django表单文档,并简要提到了django.contrib.admin.widgets,但我不知道如何使用它?

这是我想要应用的模板.

<form action="." method="POST">
    <table>
        {% for f in form %}
           <tr> <td> {{ f.name }}</td> <td>{{ f }}</td> </tr>
        {% endfor %}
    </table>
    <input type="submit" name="submit" value="Add Product">
</form>
Run Code Online (Sandbox Code Playgroud)

此外,我认为应该注意的是,我没有真正为自己的表单编写视图,我使用的是通用视图.这是来自url.py的条目:

(r'^admin/products/add/$', create_object, {'model': Product, 'post_save_redirect': ''}),
Run Code Online (Sandbox Code Playgroud)

而且我对整个Django/MVC/MTV事物都是新手,所以请轻松一点......

python django

167
推荐指数
10
解决办法
11万
查看次数

Django问题在ModelForms中继承formfield_callback

我现在只使用Django几周了,所以我可能会遇到各种各样的错误,但是:

我有一个基本的ModelForm,我把一些样板文件放在尽可能保持DRY的地方,而我所有的实际ModelForms只是将该基本形式子类化.这对我来说很有用error_css_class = 'error',required_css_class = 'required'但是formfield_callback = add_css_classes并没有像我期望的那样工作.

forms.py

# snippet I found
def add_css_classes(f, **kwargs):
    field = f.formfield(**kwargs)
    if field and 'class' not in field.widget.attrs:
        field.widget.attrs['class'] = '%s' % field.__class__.__name__.lower()
    return field

class BaseForm(forms.ModelForm):
    formfield_callback = add_css_classes  # not working

    error_css_class = 'error'
    required_css_class = 'required'
    class Meta:
        pass

class TimeLogForm(BaseForm):
    # I want the next line to be in the parent class
    # formfield_callback = add_css_classes
    class Meta(BaseForm.Meta):
        model = TimeLog
Run Code Online (Sandbox Code Playgroud)

最终目标是使用一类datefield/timefield/datetimefield在表单上打一些jquery日期时间选择器.我希望应用程序中的所有日期时间字段都使用相同的小部件,因此我选择这样做,而不是明确地为每个模型中的每个字段执行此操作.为每个表单类添加一个额外的行并不是什么大不了的事,但它只是在告诉我我无法理解它.在django来源中挖掘表明这可能正在做一些我不理解的事情: …

django django-forms

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

制作Django forms.DateField显示使用本地日期格式

我正试图找到一种简单的方法来构建以澳大利亚格式显示日期的表格(年/月/日).这是我能找到的唯一方法.似乎应该有一个更好的解决方案.

注意事项:

  • 创建了一个新的小部件,以dd/mm/yyyy格式呈现日期值
  • 创建新的日期字段,以将定位日期格式字符串添加到它尝试使用的值列表中

我想,理想的解决方案是一个自动本地化的日期字段,但对我来说不起作用(strftime似乎不是unicode友好但我没有努力尝试)

我错过了什么吗?有更优雅的解决方案吗?这是一种强有力的方法吗?

from models import *
from django import forms
import datetime

class MyDateWidget(forms.TextInput):

    def render(self, name, value, attrs=None):

            if isinstance(value, datetime.date):
                    value=value.strftime("%d/%m/%Y")

            return super(MyDateWidget, self).render(name, value, attrs)


class MyDateField(forms.DateField):

    widget = MyDateWidget

    def __init__(self, *args, **kwargs):
            super(MyDateField, self).__init__(*args, **kwargs)
            self.input_formats = ("%d/%m/%Y",)+(self.input_formats)


class ExampleForm(ModelForm):
    class Meta: 
            model=MyModel
            fields=('name', 'date_of_birth')

    date_of_birth = MyDateField()
Run Code Online (Sandbox Code Playgroud)

forms django strftime datefield

7
推荐指数
2
解决办法
2万
查看次数

标签 统计

django ×3

datefield ×1

django-forms ×1

forms ×1

python ×1

strftime ×1