以Django形式添加自定义DateTimePicker

我是Django的新手,所以我决定构建一个简单的应用程序来测试我的技能。在一种模型形式上,我有一个DateTimeField,但是它仅默认为TextField。我想用bootstrap创建一个自定义的日期时间选择器,但是我不知道如何实现它。我遵循了Tempus Dominus Bootstrap 4 here的教程。他们说的我都有,但是当我导航到表单时,它显示一个错误:“ BootstrapDateTimePickerInput”对象没有属性“ is_hidden”。

Models.py

from django.db import models

class ToDoItem(models.Model):
    title = models.CharField(max_length=100)
    description = models.TextField()
    start_time = models.DateTimeField()
    end_time = models.DateTimeField()
    remind_time = models.DateTimeField()

Widgets.py

from django.forms import DateTimeField

class BootstrapDateTimePickerInput(DateTimeField):
    template_name = 'main/bootstrap_datetimepicker.html'

    def get_context(self,name,value,attrs):
        datetimepicker_id = 'datetimepicker_{name}'.format(name=name)
        if attrs is None:
            attrs = dict()
        attrs['data-target'] = '#{id}'.format(id=datetimepicker_id)
        attrs['class'] = 'form-control datetimepicker-input'
        context = super().get_context(name,attrs)
        context['widget']['datetimepicker_id'] = datetimepicker_id
        return context

forms.py

from django import forms
from .widgets import BootstrapDateTimePickerInput
from .models import ToDoItem

class NewEventForm(forms.ModelForm):
    start_time = forms.DateTimeField(
        input_formats=['%d/%m/%Y %H:%M'],widget=BootstrapDateTimePickerInput()
    )
    end_time = forms.DateTimeField(
        input_formats=['%d/%m/%Y %H:%M'],widget=BootstrapDateTimePickerInput()
    )
    remind_time = forms.DateTimeField(
        input_formats=['%d/%m/%Y %H:%M'],widget=BootstrapDateTimePickerInput()
    )
    class Meta:
        model = ToDoItem
        fields = ['title','description','start_time','end_time','remind_time'] 

views.py

from django.shortcuts import render
from django.contrib.auth.decorators import login_required
from django.views.generic import CreateView
from .models import ToDoItem
from .forms import NewEventForm

@login_required(login_url='/login')
def home(request):
    context = {
        'test':'test'
    }
    return render(request,'main/home.html',context)


@login_required(login_url='/login')
def new_event(request):
    if request.method == 'POST':
        form = NewEventForm(request.POST)
        if form.is_valid():
            form.save()
            messages.success(request,'Event Successfully Created!')
            return redirect('app-home') 
    else:
        form = NewEventForm()
    return render(request,'main/todoitem_form.html',{'form': form})

todoitem_form.html

{% extends "main/base.html" %}
{% load crispy_forms_tags %}
{% block content %}
    <div class="content-section">
        <form method="POST">
            {% csrf_token %} 
            <fieldset class="form-group">
                <legend class="border-bottom mb-4">New Event</legend>
                {{ form|crispy }} 
            </fieldset>
            <div class="form-group">
                <button class="btn btn-outline-info" type="submit">Create</button>
            </div>
        </form>
    </div>
{% endblock content %} 
ilovec042 回答:以Django形式添加自定义DateTimePicker

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3085374.html

大家都在问