Friday, September 13, 2013

form issue.

I have a form with a lot of fields in it.  Users will never require data in all fields, so most have the required = False tag:

model:
class EditStruct(models.Model):
    varName = models.CharField(max_length=50)
    varOrder = models.IntegerField()
    varLabel = models.CharField(max_length=200)
    varType = models.CharField(max_length=20)
    vChoice1_text = models.CharField(max_length=200)
    vChoice1_code = models.IntegerField()
    vChoice1_score = models.IntegerField()
    vChoice2_text = models.CharField(max_length=200)
    vChoice2_code = models.IntegerField()
    vChoice2_score = models.IntegerField()
    vChoice3_text = models.CharField(max_length=200)
    vChoice3_code = models.IntegerField()
    vChoice3_score = models.IntegerField()
    vChoice4_text = models.CharField(max_length=200)
    vChoice4_code = models.IntegerField()
    vChoice4_score = models.IntegerField()
    vChoice5_text = models.CharField(max_length=200)
    vChoice5_code = models.IntegerField()
    vChoice5_score = models.IntegerField()
    vChoice6_text = models.CharField(max_length=200)
    vChoice6_code = models.IntegerField()
    vChoice6_score = models.IntegerField()
    vChoice7_text = models.CharField(max_length=200)
    vChoice7_code = models.IntegerField()
    vChoice7_score = models.IntegerField()
    vChoice8_text = models.CharField(max_length=200)
    vChoice8_code = models.IntegerField()
    vChoice8_score = models.IntegerField()
    vChoice9_text = models.CharField(max_length=200)
    vChoice9_code = models.IntegerField()
    vChoice9_score = models.IntegerField()
    vChoice0_text = models.CharField(max_length=200)
    vChoice0_code = models.IntegerField()
    vChoice0_score = models.IntegerField()
    EditData_id = models.ForeignKey(EditData)

view:
def editstruct(request):
    user = User.objects.get(pk=request.session['user.id'])
    if request.method == 'POST':
        form = EditStructForm(request.POST)
        if form.is_valid():
            edstruct = EditStruct()
            edstruct.varName = form.cleaned_data['varName']
            edstruct.varLabel = form.cleaned_data['varLabel']
            edstruct.varType = form.cleaned_data['varType']
            edstruct.vChoice1_text = form.cleaned_data['vChoice1_text']
            edstruct.vChoice1_code = form.cleaned_data['vChoice1_code']
            edstruct.vChoice1_score = form.cleaned_data['vChoice1_score']
            edstruct.vChoice2_text = form.cleaned_data['vChoice2_text']
            edstruct.vChoice2_code = form.cleaned_data['vChoice2_code']
            edstruct.vChoice2_score = form.cleaned_data['vChoice2_score']
            edstruct.vChoice3_text = form.cleaned_data['vChoice3_text']
            edstruct.vChoice3_code = form.cleaned_data['vChoice3_code']
            edstruct.vChoice3_score = form.cleaned_data['vChoice3_score']
            edstruct.vChoice4_text = form.cleaned_data['vChoice4_text']
            edstruct.vChoice4_code = form.cleaned_data['vChoice4_code']
            edstruct.vChoice4_score = form.cleaned_data['vChoice4_score']
            edstruct.vChoice5_text = form.cleaned_data['vChoice5_text']
            edstruct.vChoice5_code = form.cleaned_data['vChoice5_code']
            edstruct.vChoice5_score = form.cleaned_data['vChoice5_score']
            edstruct.vChoice6_text = form.cleaned_data['vChoice6_text']
            edstruct.vChoice6_code = form.cleaned_data['vChoice6_code']
            edstruct.vChoice6_score = form.cleaned_data['vChoice6_score']
            edstruct.vChoice7_text = form.cleaned_data['vChoice7_text']
            edstruct.vChoice7_code = form.cleaned_data['vChoice7_code']
            edstruct.vChoice7_score = form.cleaned_data['vChoice7_score']
            edstruct.vChoice8_text = form.cleaned_data['vChoice8_text']
            edstruct.vChoice8_code = form.cleaned_data['vChoice8_code']
            edstruct.vChoice8_score = form.cleaned_data['vChoice8_score']
            edstruct.vChoice9_text = form.cleaned_data['vChoice9_text']
            edstruct.vChoice9_code = form.cleaned_data['vChoice9_code']
            edstruct.vChoice9_score = form.cleaned_data['vChoice9_score']
            edstruct.vChoice0_text = form.cleaned_data['vChoice0_text']
            edstruct.vChoice0_code = form.cleaned_data['vChoice0_code']
            edstruct.vChoice0_score = form.cleaned_data['vChoice0_score']
            struct = str(request.session['structfile'])
            labellist = Get_labels(struct)
            x = len(labellist)-1
            y = labellist[x][0]
            edstruct.varOrder = y
            edstruct.user_id = user
            edstruct.save()
            strfile = open(get_file(struct))
            text = strfile.read()
            newvar = ritenewvar(edstruct)
            out = open('c:\\stats_portal\\myproject\\myproject\\media'+struct, 'w')
            out.write(text)
            out.write(newvar)
            out.close()
            return HttpResponseRedirect(reverse('myproject.myapp.views.eitstruct'))
    else:
        form = EditStructForm()
    return render_to_response('myapp/editstruct.html', { 'form': form },
                              context_instance = RequestContext(request)
                              )

form:
class EditStructForm(forms.Form):
    varName = forms.CharField()
    varLabel = forms.CharField()
    varType = forms.CharField()
    vChoice1_text = forms.CharField()
    vChoice1_code = forms.IntegerField(required = False)
    vChoice1_score = forms.IntegerField(required = False)
    vChoice2_text = forms.CharField(required = False)
    vChoice2_code = forms.IntegerField(required = False)
    vChoice2_score = forms.IntegerField(required = False)
    vChoice3_text = forms.CharField(required = False)
    vChoice3_code = forms.IntegerField(required = False)
    vChoice3_score = forms.IntegerField(required = False)
    vChoice4_text = forms.CharField(required=False)
    vChoice4_code = forms.IntegerField(required=False)
    vChoice4_score = forms.IntegerField(required=False)
    vChoice5_text = forms.CharField(required=False)
    vChoice5_code = forms.IntegerField(required=False)
    vChoice5_score = forms.IntegerField(required=False)
    vChoice6_text = forms.CharField(required=False)
    vChoice6_code = forms.IntegerField(required=False)
    vChoice6_score = forms.IntegerField(required=False)
    vChoice7_text = forms.CharField(required=False)
    vChoice7_code = forms.IntegerField(required=False)
    vChoice7_score = forms.IntegerField(required=False)
    vChoice8_text = forms.CharField(required=False)
    vChoice8_code = forms.IntegerField(required=False)
    vChoice8_score = forms.IntegerField(required=False)
    vChoice9_text = forms.CharField(required=False)
    vChoice9_code = forms.IntegerField(required=False)
    vChoice9_score = forms.IntegerField(required=False)
    vChoice0_text = forms.CharField(required=False)
    vChoice0_code = forms.IntegerField(required=False)
    vChoice0_score = forms.IntegerField(required=False)

I entered:
varName : Q4aNet
varLabel:  Net for Q4a
varType:  Single
vChoice1_text: Satisfied (net)
vChoice1_code: 1
vChoice2_text: x
vChoice3_text: x
vChoice4_text: Dissatisfied (net)
vChoice4_code: 2

[This is a good example of how the for would be used]

When I submit the form, I get the error "vChoice1_score cannot be null."
I thought that required = False would allow that?
Am I doing something wrong here?

Cheers, Nigel
07914 740972

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at http://groups.google.com/group/django-users.
For more options, visit https://groups.google.com/groups/opt_out.

0 Comments:

Post a Comment

Subscribe to Post Comments [Atom]

<< Home


Real Estate