gpt4 book ai didi

python - 使用 SelectDateWidget 的两个 django 表单字段

转载 作者:太空宇宙 更新时间:2023-11-03 16:55:36 24 4
gpt4 key购买 nike

我在 forms.py 中设置了 ContactView,如下所示:

from django.forms import ModelForm, extras
from .models import ContactForm
from django import forms
from django_countries.widgets import CountrySelectWidget
import datetime


class ContactView(ModelForm):

"""Docstring for ContactView. """
birthdate = forms.DateField(widget=extras.SelectDateWidget(years=range(2025, 1939, -1)))
message = forms.CharField(widget=forms.Textarea)
move_in_date, move_out_date = forms.DateField(widget=extras.SelectDateWidget(),
initial=datetime.date.today())

class Meta:
fields = ['name', 'email', 'topic', 'message',
'birthdate', 'move_in_date', 'move_out_date',
'country']
model = ContactForm
widgets = {'country': CountrySelectWidget()

}

如何move_in_datemove_out_date使用SelectDateWidget,(我想要这个,因为我需要显示这个小部件两次)这里给出我遇到了一个很好的 TypeError,因为 DateField 不可迭代。我也不希望它们像这样写,即使这样做也有效,但是闻起来很糟糕

  move_in_date = forms.DateField(widget=extras.SelectDateWidget(), initial=datetime.date.today())
move_out_date = forms.DateField(widget=extras.SelectDateWidget(), initial=datetime.date.today())

问题是如何正确地写这个?

最佳答案

在你的代码中

move_in_date, move_out_date = ...

右侧需要两个变量(或具有两个元素的迭代器)才能进行赋值。这就是您收到错误 DateField is not iterable 的原因。您可以在右侧定义 DateField 两次,错误就会消失。

如果您尝试删除代码中的重复项,只需将公共(public)代码分解为函数即可:

def get_move_date_field():
""" return a DateField suitable for move_in and move_out """
return forms.DateField(widget=extras.SelectDateWidget(), initial=datetime.date.today())

class ContactView(ModelForm):
....
move_in_date = get_move_date_field()
move_out_date = get_move_date_field()

关于python - 使用 SelectDateWidget 的两个 django 表单字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35443799/

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