Django DateTimeField 输入表单

标签 django datetime

我的模型中有一个 DateTime 字段,我正在寻找一种简单的方法来使其在表单中看起来不错。类似于SelectDateWidget

我一直在研究很多类似的问题,并且让像 admin datepicker 或 jquery 这样的东西工作似乎真的很棘手。 (这是我第一次使用Django,之前从未使用过jquery)。

所以,我使用 ChoiceField 而不是 this例如,但我也无法让它工作。我收到错误名称​​'self'未定义。我可以不在这里使用 self 吗?或者有一些更好的简单方法来做到这一点?我不需要花哨的日期选择器,只需要能让用户轻松输入的东西。

class ProjectForm(ModelForm):
    startdate = forms.DateField()
    starthour = forms.ChoiceField(choices=((6,"6am"),(7,"7am"),(8,"8am"),(9,"9am"), ...))
    startminute = forms.ChoiceField(choices=((0,":00"),(15,":15"),(30,":30"),(45,":45")))

    class Meta:
        model = Project

    def clean(self):
        starttime = time(int(self.cleaned_data.get('starthour')), 
                         int(self.cleaned_data.get('startminute')))
        return self.cleaned_data

    try:
        self.instance.start_time = datetime.datetime.combine(
            self.cleaned_data.get("startdate"), starttime)
    except TypeError:
        raise forms.ValidationError("")

最佳答案

forms.py

from django import forms
from django.contrib.admin import widgets                                       

class MyForm(forms.ModelForm):
    class Meta:
        model = MyModel

    def __init__(self, *args, **kwargs):
        super(MyForm, self).__init__(*args, **kwargs)
        self.fields['mydate'].widget = widgets.AdminDateWidget()
        self.fields['mytime'].widget = widgets.AdminTimeWidget()
        self.fields['mydatetime'].widget = widgets.AdminSplitDateTime()

在模板中:

<script type="text/javascript" src="/my_admin/jsi18n/"></script>
<script type="text/javascript" src="/media/admin/js/core.js"></script>

...或者,对于 Django 1.4+:

{% load static %}

<link rel="stylesheet" type="text/css" 
    href="{% static 'admin/css/forms.css' %} "/>
<link rel="stylesheet" type="text/css" 
    href="{% static 'admin/css/base.css' %} "/>
<link rel="stylesheet" type="text/css" 
    href="{% static 'admin/css/global.css' %}"/>
<link rel="stylesheet" type="text/css" 
    href="{% static 'admin/css/widgets.css' %}"/>

<script type="text/javascript" 
    src="/admin/jsi18n/"></script>
<script type="text/javascript" 
    src="{% static 'admin/js/core.js' %}"></script>
<script type="text/javascript" 
    src="{% static 'admin/js/admin/RelatedObjectLookups.js' %}"></script>
<script type="text/javascript" 
    src="{% static 'admin/js/jquery.js' %}"></script>
<script type="text/javascript" 
    src="{% static 'admin/js/jquery.init.js' %}"></script>
<script type="text/javascript" 
    src="{% static 'admin/js/actions.js' %}"></script>
<script type="text/javascript" 
    src="{% static 'admin/js/calendar.js' %}"></script>
<script type="text/javascript" 
    src="{% static 'admin/js/admin/DateTimeShortcuts.js' %}"></script>

关于Django DateTimeField 输入表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15291887/

相关文章:

php - 将提交表单中的日期和时间合并为单个日期时间列插入 MySQL 时出错

java - 在东部时间中获取日期和时间输入,并在Java中转换为UTC时间戳

JSON 中的 Django REST Framework FileField 数据

python - 在 Django 中获取彼此相邻的两个对象

css - 在 django-page-CMS 中创建的 View 禁用所有 CSS?包含代码,请修复

datetime - NIFI 检查并验证 CSV 文件中格式为 `mm/dd/yyyy HH:mm:ss` 的日期时间列值。如果格式匹配则视为有效,否则视为无效

c# - 在 C#/ASP.NET 中将日期时间转换为时间

Django 相当于 SQL REPLACE

python - 有没有办法在 Django 中的隐式多对多表上添加附加字段?

mysql - DATETIME VS INT 用于存储时间?