обработка нескольких значений из HTML-формы в Django - PullRequest
0 голосов
/ 09 июня 2019

Проблема: у меня есть образец формы, где пользователь может добавить свои языки, которые знают, что является динамическим.Мне нужно вставить это в sqlite DB с помощью Django.

Я пытаюсь получить данные, но почему-то я не получаю желаемого результата.Проблема: 1) невозможно получить экземпляр FK PersonInfo ID 2) не получается список языков.Если я показываю, он показывает только один язык.

from django.db import models

# Create your models here.
class PersonInfo(models.Model):
    firstname = models.CharField(max_length = 100)
    lastname = models.CharField(max_length = 100)
    phone = models.CharField(max_length = 20)
    email = models.CharField(max_length = 100)

    def __str__(self):
        return self.firstname

class KnownLanguages(models.Model):
    languagename = models.CharField(max_length = 100)
    personinfo = models.ForeignKey(PersonInfo, on_delete = models.CASCADE) 

    def __str__(self):
        return self.languagename    

Ниже приведен код для Django View

def addperson(request):
    personinfo = PersonInfo.objects
    knownlang = KnownLanguages

    if request.method == 'POST':
        if request.POST['firstname'] and request.POST['lastname'] and request.POST['languagename']:
            person = PersonInfo()
            lang = KnownLanguages()
            person.firstname = request.POST['firstname']
            person.lastname = request.POST['lastname']
            person.phone = request.POST['phone']
            person.email = request.POST['email']
            # person.save()
            print(person.firstname)
            print(person.id)

            lang.languagename = request.POST['languagename']
            lang.personinfo = person
            # lang.save()
            print(lang)

            return render(request, 'dynamicaddfields/addperson.html', {'personinfo' : personinfo, 'knownlang': knownlang})

        else:
            return render(request, 'dynamicaddfields/addperson.html', {'error' : 'Please fillout atleast First & Last Name and atleast one Language.'}) 
    else :
        return render(request, 'dynamicaddfields/addperson.html', {'personinfo' : personinfo, 'knownlang': knownlang})


Ниже приведен HTML-код

   <form method = "POST" action = "{% url 'addperson' %}" enctype = "multipart/form-data">
        {% csrf_token %}
        <p> First Name   : <input type="text" name="firstname" placeholder="First Name"> </p>
        <p> Last Name: <input type="text" name="lastname" placeholder="Last Name"> </p>
        <p> Phone Number : <input type="text" name="phone" placeholder="Phone Number"> </p>
        <p> Email : <input type="text" name="email" placeholder="Email ID"> </p>
        <p> Provide Languages you know : <div class="input_fields_wrap">
            <br>
                <button class="add_field_button">Add More Lanugages </button>
            <div>
                <input type="text" name="languagename"></div>
        </div></p>
        <input class="btn btn-primary" type="submit" name="create" value = "Add Person">
    </form>

...