gpt4 book ai didi

python - 自定义表单中的 django admin 日期时间小部件(日历)

转载 作者:行者123 更新时间:2023-11-28 19:20:25 32 4
gpt4 key购买 nike

我无法在我的表单中添加管理日历小部件。怎么做?

模型.py

from django.db import models
from django.contrib.auth.models import User


FIELDNUM = (('1', '1'), ('2', '2'), ('3', '3'),
('4', '4'), ('5', '5'), ('6', '6'), ('7', '7'), ('8', '8'),
('9', '9'), ('10', '10'))

FIELDNAMES = (('test', 'test'), ('kostas', 'kostas'), ('kaka', 'kaka'))

class Reservation(models.Model):
field_name = models.CharField("Field Name*", choices=FIELDNAMES, max_length=100)
fieldnum = models.CharField("Field Number*", choices=FIELDNUM, max_length=2)
date = models.DateField("Date*")
time = models.TimeField("Time*")
user = models.ForeignKey(User)
date_time = models.DateTimeField(auto_now_add=True, blank=True, unique=False)

def __unicode__(self):
return '%s, %s, %s, %s' % (self.field_name, self.date, self.time, self.date_time)

class Meta:
unique_together = ("field_name", "fieldnum", "date", "time")

表单.py

from django import forms
from booking.models import Reservation

class ReservationForm(forms.ModelForm):
class Meta:
model = Reservation
exclude = ['user']

我在模板中将表单呈现为段落。

在哪里调用小部件以及如何在我的模板中设置它以使其工作?

最佳答案

我认为最简单的方法是不使用 django.contrib.admin.widgets 中的小部件而是第三方小部件,例如 Datepicker来自 jQuery UI。

您所要做的就是包括 jQuery UI在您的模板中并添加此脚本

<script>
$(function() {
$( ".date_picker" ).datepicker();
});
</script>

在哪里.date_picker是与 date 相关的表单输入类的名称你的领域Reservation模型。

为了让 Django 添加这个 class='date_picker'到与 date 相关的生成的表单输入, 你必须稍微修改你的 ModelForm .更具体地说,

from django import forms
from booking.models import Reservation

class ReservationForm(forms.ModelForm):
class Meta:
model = Reservation
exclude = ['user']
widgets = {
'date' : forms.DateInput(attrs={'class' : 'date_picker'})
}

这会产生渲染<input type='text' ... class='date_picker' />的效果当你调用{{ form.as_p }}在您的模板中,jQuery UI 会完成剩下的工作。

顺便说一下,对你的 models.py 做一个小小的改进将是使用 python 的列表理解。即

FIELDNUM = (('1', '1'), ('2', '2'), ('3', '3'),
('4', '4'), ('5', '5'), ('6', '6'), ('7', '7'), ('8', '8'),
('9', '9'), ('10', '10'))

相当于

FIELDNUM = [(str(i), str(i)) for i in range(1,11)]

关于python - 自定义表单中的 django admin 日期时间小部件(日历),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26442857/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com