如何在Django中拆分表单字段以显示多个值



My Journey模型包含两个字段,距离和时间:

class Journey(models.Model):
distance = models.PositiveIntegerField(default=0)
time = models.PositiveIntegerField(default=0)

我正在尝试创建一个Modelform,其中时间字段将被拆分以显示"小时"、"分钟"one_answers"秒"的输入。然后我希望这些值被压缩,以便返回一个值。目前我的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'。有人能帮我了解如何解决这个问题吗?一段时间以来,我一直在网上寻找解决方案,但到目前为止仍然被难住了。

您可以尝试创建DurationField:

class Journey(models.Model):
distance = models.PositiveIntegerField(default=0)
time = models.DurationField()
class DistanceTimeModelForm(forms.ModelForm):
class Meta:
model = Journey
fields = ["distance", "time"]

最新更新