Как произвести запись в зависимую модель?

Пытаюсь передать email через куки в другую страницу и записать данные в зависимую модель. Из forms.py приходит форма со скрытым input'ом, далее в HTML этому input'у присваивается value=email из кук. Однако не могу понять как записать эти данные в зависимую модель - AboutInfo.

forms.py:

from django import forms
class info_form(forms.Form):
    name = forms.CharField(max_length=100)
    language = forms.ChoiceField(choices=((1, "English"), (2, "Russian")))
    info = forms.CharField()
    myEmail=forms.CharField(widget = forms.HiddenInput())

HTML:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>Bot</title>
    <style>
    .field{font-weight:bold;}
    .error{color:red;}
    </style>
</head>
<body class="container">
    <div id="slide" style="display:none;">
    <form method="POST" id="form">
        {% csrf_token %}
        <table>
        {{ info_form }}
        </table>
        <input type="submit" value="Добавить" id="add" >
    </form></div>

<script>
email=localStorage.getItem("email");
    
function myFunction() {  
      document.getElementById("id_myEmail").value = email;
    }
</script>

views.py:

def foo(request):
        
    if request.method == "POST":
        XP=info_form(request.POST)
        if XP.is_valid():
            mail = GeneralInfo.objects.get(name=XP.cleaned_data["myEmail"])
            mail.AboutInfo_set.create(
            name = XP.cleaned_data["name"],
            Bot_type = XP.cleaned_data["language"],
            Bot_risk = XP.cleaned_data["info"],
            )
            return HttpResponseRedirect("")

    return render(request, "error.html")

Models.py:

from django.db import models
     
class GeneralInfo(models.Model):
    user_id = models.IntegerField(auto_created=True, primary_key=True, serialize=False, verbose_name='user_id')
    email = models.EmailField()
    password = models.CharField(max_length=20)
    
    
class AboutInfo(models.Model):
    generalInfo = models.ForeignKey(GeneralInfo, on_delete = models.CASCADE)
    name = models.CharField(max_length=100, blank=True)
    language = models.IntegerField(blank=True)
    info = models.TextField(max_length=200, blank=True)
    

Как произвести эту запись правильно? Подозреваю что я наделал костылей.


Ответы (0 шт):