Виджет времени Djago не отображается
Все, что я хочу сделать, это добавить виджет времени в мою форму, чтобы я мог легко выбрать время. Все очень просто, страница загружается, но виджеты не появляются. Никаких ошибок, ничего. Я думаю, может быть, я неправильно настроил виджеты формы, но не уверен, что я сделал неправильно. Вот мой Forms.py-
from django.contrib.admin import widgets
from django.contrib.admin.widgets import AdminDateWidget, AdminTimeWidget, AdminSplitDateTime
class WorkOutForm(ModelForm):
class Meta:
model = WorkOut
fields = '__all__'
widgets={
'start':AdminTimeWidget(),
'end':AdminTimeWidget(),
}
Вот Models.py. Вы заметите, что поля "начало" и "конец" являются таймфилдами-
class WorkOut(models.Model):
date=models.DateField(auto_now_add=True, auto_now=False, blank=True)
day=models.DateField(auto_now_add=True, auto_now=False, blank=True)
start=models.TimeField(null=True)
name=models.CharField(max_length=100, choices=move)
weight=models.CharField(max_length=100, blank=True)
rep=models.CharField(max_length=100, blank=True)
pedal= models.CharField(max_length=100, blank=True)
stretchtype =models.CharField(max_length=100, blank=True)
end=models.TimeField(null=True)
note=models.TextField(max_length=300, blank=True)
def __str__(self):
return self.name
А вот мнения, связанные с этим, хотя я не думаю, что это имеет большое значение -
def workout(request):
form=WorkOutForm()
if request.method=="POST":
form=WorkOutForm(request.POST)
if form.is_valid():
form.save()
context={'form':form}
return render(request, 'myapp/enter_workout.html', context)
def update_workout(request, pk):
order=WorkOut.objects.get(id=pk)
form=WorkOutForm(instance=order)
if request.method=='POST':
form=WorkOutForm(request.POST, instance=order)
if form.is_valid():
form.save()
context={'form':form}
return render(request, 'myapp/enter_workout.html', context)
А форма на HTML-странице также очень проста, так что не думаю, что там тоже есть проблемы-
<form action="" method="POST">
{% csrf_token %}
{{form}}
<input type="submit" value="Submit">
</form>
Что я сделал не так? Как я могу заставить эти виджеты отображаться?
auto_now или auto_now_add в True приведет к тому, что поле будет установлено editable=False и blank=True. Здесь вы можете читать
Подумал, что в форме отображаются только те поля, которые можно редактировать. Я переделал модель, используя текущее время, и теперь все поля в форме видны.
import datetime
class WorkOut(models.Model):
move = (("1", "Tom"), ("2", "Sara"), ("3", "Emilia"),)
date = models.DateField(default=datetime.date.today, auto_now=False, blank=True)
day = models.DateField(default=datetime.date.today, auto_now=False, blank=True)
start = models.TimeField(null=True)
name = models.CharField(max_length=100, choices=move)
weight = models.CharField(max_length=100, blank=True)
rep = models.CharField(max_length=100, blank=True)
pedal = models.CharField(max_length=100, blank=True)
stretchtype = models.CharField(max_length=100, blank=True)
end = models.TimeField(null=True)
note = models.TextField(max_length=300, blank=True)
def __str__(self):
return self.name