Django modelform不保存输入选项且不返回错误
我有一个模型表单,只有在所有字段都没有选择的情况下才能工作(将输入数据保存到数据库)。当我引入选项时,我没有收到任何错误,表单似乎有效,但没有保存任何内容。 我已经仔细阅读了文档,没有返回任何有用的内容 我确信我需要在视图中做更多的工作来获得所选的输入选项,或者我需要向模型类添加一些方法。请给我指一下正确的方向 这是我的模型:Django modelform不保存输入选项且不返回错误,django,python-3.x,django-forms,Django,Python 3.x,Django Forms,我有一个模型表单,只有在所有字段都没有选择的情况下才能工作(将输入数据保存到数据库)。当我引入选项时,我没有收到任何错误,表单似乎有效,但没有保存任何内容。 我已经仔细阅读了文档,没有返回任何有用的内容 我确信我需要在视图中做更多的工作来获得所选的输入选项,或者我需要向模型类添加一些方法。请给我指一下正确的方向 这是我的模型: class OpeningHours(models.Model): ''' ''' class Meta: verbose_name = 'Ope
class OpeningHours(models.Model):
'''
'''
class Meta:
verbose_name = 'Opening Hour'
verbose_name_plural = 'Opening Hours'
#######################################################
mytime = Bizhours()
################################################
id = models.AutoField(primary_key=True)
company =models.CharField(max_length=100, null=True, blank=True)
weekday = models.CharField(max_length=100, choices=mytime.getweekdays(), default='Monday', null=True)
fromHour = models.CharField(max_length=100, null=True, blank=True)
fromMinute = models.CharField(max_length=100, null=True, blank=True)
toHour = models.CharField(max_length=100, null=True, blank=True)
toMinute = models.CharField(max_length=100, null=True, blank=True)
'''
id = models.AutoField(primary_key=True)
company = models.ForeignKey(Company)
weekday = models.IntegerField(choices=mytime.getweekdays())
fromHour = models.TimeField(choices=mytime.gettime12())
fromMinute = models.TimeField(choices=mytime.getminutes())
toHour = models.TimeField(choices=mytime.gettime12())
toMinute = models.TimeField(choices=mytime.getminutes())
'''
def __str__(self):
return "%s %s (%s - %s)" % (self.company, self.weekday, self.fromHour, self.toHour)
以下是我的看法
@login_required
def addprofile(request):
current_user = request.user
#OpeningHoursFormSet = modelformset_factory(OpeningHours, form=OpeningHoursForm,extra=1)
if request.session['entry_count'] > 1:
messages.success( request, 'You can only create two business profiles now' )
return HttpResponseRedirect( reverse('home') )
else:
if request.method == 'POST':
form = OpeningHoursForm(request.POST)
if form.is_valid():
model_instance = form.save(commit=False)
model_instance.company ="thiscompany"
model_instance.weekday = request.POST.get('weekday')
model_instance.save()
else:
print("problems saving edited form")
return HttpResponseRedirect('/bizprofile/success')
else:
form = OpeningHoursForm()
context = {'form': form}
return render_to_response('bizprofile/addprofile.html', context, context_instance=RequestContext(request))
这是表格
{% extends "bizprofile/bizprofilebase.html" %}
{% block content %}
{% if form.subject.errors %}
<ol>
{% for error in form.subject.errors %}
<li><strong>{{ error|escape }}</strong></li>
{% endfor %}
</ol>
{% endif %}
{% if user.is_authenticated %}
<p>Welcome, {{ user.get_username }}. Thanks for logging in.</p>
<form method="post" action="">
{% csrf_token %}
<table>
{{form}}
</table>
<input type="submit" value="Submit Form"/>
</form>
{% else %}
<p>Welcome, new user. Please log in.</p>
{% endif %}
{% endblock %}
{%extends“bizprofile/bizprofilebase.html”%}
{%block content%}
{%if form.subject.errors%}
{form.subject.errors%中的错误为%s}
{{error | escape}}
{%endfor%}
{%endif%}
{%if user.u经过身份验证%}
欢迎,{{user.get_username}}。感谢您登录
{%csrf_令牌%}
{{form}}
{%else%}
欢迎新用户。请登录
{%endif%}
{%endblock%}
问题在于OP对工作日数据类型使用了CharField
,但函数返回的选项定义为整数。由于它们不兼容,因此无法保存数据。您的表单在哪里?这是模型表单集的一部分,但我已将其缩小到这个比例。我现在确定这是选择,因为如果没有它们,我可以在数据库中看到保存的数据。您的get\u week\u day()
函数返回什么?def getweekdays(self):self.WEEKDAYS=[(1,uu(“星期一”),(2,(“星期二”),(3,(“星期三”),(4_(如果打印request.POST.get('weekday'),则返回self.weekday
在将其分配给模型\u实例
之前,其值是多少?您也在工作日使用字符域
,但您的选择是整数1~7。您应该将其更改为整数域
。