Django modelform不保存输入选择而不返回错误

时间:2015-11-20 15:06:13

标签: django python-3.x django-forms

如果没有任何字段可供选择,我有一个只能工作的模型(将输入数据保存到数据库)。当我介绍选择时,我没有得到任何错误,表单似乎是有效的,但没有任何东西得到保存。 我已经梳理了文档,我没有回复任何有用的东西。

我确信我需要在我的视图中做更多的事情才能获得所选的输入选择,或者我需要在模型类中添加一些方法。请指出我正确的方向。

这是我的模特:

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 %}

1 个答案:

答案 0 :(得分:2)

问题在于OP正在使用CharField作为工作日数据类型,但是从函数返回的选项被定义为整数。由于它们不兼容,因此无法保存数据。