Как разделить поле формы для отображения нескольких значений в Django
Модель My Journey содержит два поля: расстояние и время:
class Journey(models.Model):
distance = models.PositiveIntegerField(default=0)
time = models.PositiveIntegerField(default=0)
Я пытаюсь создать модель, в которой поле времени будет разделено для отображения входных данных для "часов", "мин" и "сек". Затем я хотел бы, чтобы эти значения были сжаты, чтобы вернуть одно значение. В настоящее время мой forms.py выглядит так:
from django import forms
from django.forms import MultiWidget
from .models import Journey
class DistanceTimeModelForm(forms.ModelForm):
time = forms.MultiValueField(
widget=MultiWidget(
widgets=[
forms.IntegerField(attrs={"placeholder": "hrs"}),
forms.IntegerField(attrs={"placeholder": "min"}),
forms.IntegerField(attrs={"placeholder": "sec"}),
]
),
require_all_fields=True,
error_messages={"incomplete": "Please enter a number"},
)
class Meta:
model = Journey
fields = ["distance", "time"]
Я получаю
TypeError: __init__() got an unexpected keyword argument 'attrs'
когда я пытаюсь запустить сервер. Кто-нибудь может помочь мне понять, как это исправить? Некоторое время я искал решение в Интернете, но пока все еще в тупике.
1 ответ
Решение
Вместо этого вы можете попробовать создать DurationField:
class Journey(models.Model):
distance = models.PositiveIntegerField(default=0)
time = models.DurationField()
class DistanceTimeModelForm(forms.ModelForm):
class Meta:
model = Journey
fields = ["distance", "time"]