Django: хранить переменные в базе данных и передавать их между различными модулями

В моей модели я пытаюсь вычислить возраст пользователя и создать для него id код, и я хочу сохранить эту информацию в базе данных, но поля "age" и "id_code" отсутствуют в моей базе данных. Если я изменю имя функции, то возраст и переменная id вообще не вычисляются.

**accounts.models** 
class UserInformation(models.Model): 
    name = models.CharField(max_length=250)
    lastname = models.CharField(max_length=250)
    phone = models.CharField(max_length=250)
    birthday = models.DateField()
    age = models.CharField(max_length=2)
    id = models.CharField(max_length=250)   
 
    def __str__(self):
    self.name + '_' + self.lastname + '_' + str(self.birthday.year)

    def age(self):
       age = datetime.now().year - int(self.birthdate.year)
       return age

    def id_code(self):
        id_code = self.name + '_' + self.lastname + '_' + int(self.birthday.year)
        return id_code
**accounts.forms.py**
class UserInformationForm(forms.ModelForm):
   class Meta:
       model = UserInformation
       fields = ('name', 'lastname', 'birthday', 'phone')
**accounts.views.py**
def add_information(request):
  if request.method == 'POST':
      form = UserInformationForm(request.POST, request.FILES)
      if form.is_valid():
          form.instance.user = request.user
          form.save()           
          return redirect('home')      
  else:
      form = UserInformationForm()
  return render(request, 'add_information.html', {'form': form})

У меня есть еще один файл моделей в другом приложении, в котором есть две викторины для пользователя. Я хотел бы сохранить в моей базе данных с ответами также id код, созданный в другом файле моделей и использовать ответ информации о пользователе для создания строкового имени для использования в базе данных, но это дает мне ошибку "'ImportError: cannot import name 'name' from 'accounts.models' " даже если я импортировал модули:

**question.models.py**
from accounts.models import name

class QuestionOne(models.Model):
   question_1a = models.CharField(max_length=250, choices=point)
   question_2a = models.CharField(max_length=250, choices=point)
   question_3a = models.CharField(max_length=250, choices=point)
   id_code = models.CharField(max_length=250) 

   def __str__(self):
       return self.name + '_question_1'

class QuestionTwo(models.Model):
   question_1b = models.CharField(max_length=250, choices=point)
   question_2b = models.CharField(max_length=250, choices=point)
   question_3b = models.CharField(max_length=250, choices=point)
   id_code = models.CharField(max_length=250) 

   def __str__(self):
       return self.name + '_question_2'
**question.forms.py**
class QuestionOneForm(forms.ModelForm):
   class Meta:
       model = QuestionOne
       fields = ('question_1a', 'question_2a', 'question_3a')

class QuestionTwoForm(forms.ModelForm):
   class Meta:
       model = QuestionOne
       fields = ('question_1b', 'question_2b', 'question_3b')

Недавно в моем html я хотел бы показать, сколько вопросов формы было заполнено, поэтому я добавил переменную "quest__done". К сожалению, она не работает, и на моей странице {{ quest_done }} просто пустое место

**question.views.py**
def question_one(request):
   quest_done = 0
   if request.method == 'POST':
       form = QuestionOneForm(request.POST, request.FILES)
       if form.is_valid():
           quest_done += 1
           form.instance.user = request.user           
           form.save()
           return redirect('home')      
   else:
       form = QuestionOneForm()
   return render(request, 'quest.html', {'form': form, 'quest_done': quest_done})

def question_two(request):
   quest_done = 0
   if request.method == 'POST':
       form = QuestionTwoForm(request.POST, request.FILES)
       if form.is_valid():
           quest_done += 1
           form.instance.user = request.user           
           form.save()
           return redirect('home')      
   else:
       form = QuestionTwoForm()
   return render(request, 'quest.html', {'form': form, 'quest_done': quest_done})
*html**
<div class="row">
                   <div class="col-sm-3">
                     <h6 class="mb-0">Question form completed:</h6>
                   </div>
                   <div class="col-sm-9 text-secondary">
                     {{ quest_done }} /2
                   </div>
                 </div>
Override save() method in model.

class UserInformation(models.Model): 
    name = models.CharField(max_length=250)
    lastname = models.CharField(max_length=250)
    phone = models.CharField(max_length=250)
    birthday = models.DateField()
    age = models.CharField(max_length=2,default="")
    id = models.CharField(max_length=250,default="") 


    def save(self, *args, **kwargs):
        if self.age ="":
        self.age = datetime.now().year - int(self.birthdate.year)
        self.save()
        super(UserInformation, self).save(*args, **kwargs)

вы можете сделать то же самое для id в методе save().

Вернуться на верх