Странный тип "on", записываемый в базу данных MySQL (Navicat Premium) в Django

Я пытался вставить информацию с помощью HTML-формы в свою базу данных. Однако, когда я отправляю форму, мой "gender" и мой "website_rating" были странным образом заменены на "on", в то время как они должны быть заменены моим вводом веб-сайта.

Изображение базы данных: https://i.stack.imgur.com/94d8L.png

Вот мой models.py

# _*_ coding:utf-8 _*_  
from __future__ import unicode_literals
from django.db import models

"""
Quick Guide to Model Fields that We Did Not Use:

    - models.ForeignKey()
    - models.DateTimeField()
    - models.IntegerField()
    - models.IPAddressField()
    - models.FileField()
    - models.ImageField()
"""

# Create your models here.

class PersonalInfoResponse(models.Model):
    # Personal Info Section
    name = models.CharField(max_length=30, null=True, default="N/A", verbose_name=u"Name")
    age = models.IntegerField(verbose_name=u"Age", default="N/A", null=True)
    email = models.CharField(max_length=30, null=True, default="N/A", verbose_name=u"text#@thing.com")
    gender = models.CharField(max_length=7, null=True, verbose_name=u"gender")

    # Website Response Section
    website_rating = models.CharField(max_length=3, verbose_name=u"1-10", null=True)
    heardof_flag = models.BooleanField(verbose_name=u"truefalse", null=True)
    heardof = models.CharField(max_length=255, null=True, verbose_name=u"How did you know about the C&C Education Center?")

    # Misc Section
    fav_subject = models.CharField(max_length=50, null=True, default="None", verbose_name=u"truefalse")
    fav_website = models.CharField(max_length=255, null=True, default="N/A", verbose_name=u"What is your favorite part about this website?")
    website_improve = models.CharField(max_length=255, null=True, default="N/A", verbose_name=u"What is something that this website needs improvement on?")

    class Meta:
        verbose_name = u"User Contact Info"
        verbose_name_plural = verbose_name

А вот мой views.py

from django.shortcuts import render
from django.shortcuts import redirect
from .models import PersonalInfoResponse

# Special Pages

def AfterSubmission(request):
    return render(request, 'html/elements/temp.html')

# Create your views here.

def Home(request):
    return render(request, 'html/index.html')

def Contact(request):
    # all_messages = PersonalInfoResponse.objects.all()
    # for message in all_messages:
    #     print(message.name)
    if (request.method == 'POST'):
        name = str(request.POST.get('name', ''))
        age = int(request.POST.get('age', ''))
        email = str(request.POST.get('email', ''))
        gender = request.POST.get('gender', '')
        website_rating = request.POST.get('rscale', '')
        heardof_flag = request.POST.get('ynw', '')
        heardof = str(request.POST.get('heardof_res', ''))
        fav_subject = str(request.POST.get('subjects', ''))
        fav_website = str(request.POST.get('fav_part', ''))
        website_improve = str(request.POST.get('improve_part', ''))

        # Saves User Input
        usermessage = PersonalInfoResponse()

        usermessage.name = name if isinstance(name, str) else 0
        usermessage.age = age if isinstance(age, int) else 0
        usermessage.email = email if isinstance(email, str) else 0
        usermessage.gender = gender 
        usermessage.website_rating = website_rating
        usermessage.heardof_flag = (1 if heardof_flag == 'Yes' else 0)
        usermessage.heardof = heardof
        usermessage.fav_subject = fav_subject
        usermessage.fav_website = fav_website
        usermessage.website_improve = website_improve

        usermessage.save()
    return render(request, 'html/contactform.html')

def About(request):
    return render(request, 'html/about.html')

# Elements folder

def Register(request):
    return render(request, 'html/elements/register.html')

def Login(request):
    return render(request, 'html/elements/login.html')

def Classes(request):
    return render(request, 'html/elements/classes.html')

"gender" и "website_rating" являются радиовходами HTML. Вот участок моего HTML кода:

Gender:<br>
<input type="radio" name="gender" required="required"> Male
<input type="radio" name="gender" required="required"> Female 
<input type="radio" name="gender" required="required"> Other

<br><br>
                
On a scale of 1~10, how do you rate this website?<br> 
<input type="radio" name="rscale" required="required"> 1
<input type="radio" name="rscale" required="required"> 2
<input type="radio" name="rscale" required="required"> 3
<input type="radio" name="rscale" required="required"> 4
<input type="radio" name="rscale" required="required"> 5
<input type="radio" name="rscale" required="required"> 6
<input type="radio" name="rscale" required="required"> 7
<input type="radio" name="rscale" required="required"> 8
<input type="radio" name="rscale" required="required"> 9
<input type="radio" name="rscale" required="required"> 10

Я понятия не имею, что происходит. Кто-нибудь может мне помочь?

Это мой первый вопрос на StackOverFlow, если я что-то упустил, не стесняйтесь критиковать меня.

В ваших входных данных не хватает value, поэтому, согласно спецификации HTML, вы получаете "on", поскольку выбрана радиокнопка.

<input type="radio" name="rscale" required="required" value="1"> 1
<input type="radio" name="rscale" required="required" value="2"> 2

и т.д...

Также, пожалуйста, изучите Django's Forms и ModelForms, вместо того, чтобы делать request.POST все вручную.

В-третьих, если рейтинг - это число, сделайте его таким:

website_rating = models.IntegerField(verbose_name=u"1-10", null=True)

Если он необходим, сделайте его не нулевым.

website_rating = models.IntegerField(verbose_name=u"1-10")
Вернуться на верх