Извлечение данных из форм - PullRequest
0 голосов
/ 19 января 2020

Я только начал изучать Django, и теперь я пытаюсь понять, как вставить данные в БД, как работать с данными из шаблонов и т. Д. Мой вопрос о извлечении данных из формы (мета-класс) в шаблоне.

Вот мой код:

модель

class Worker(models.Model):
POSITION_SHOICE = (
    ('MANAGER', 'MANAGER'),
    ('developer', 'DEVELOPER'),
    ('teamlead', 'TEAMLEAD'),
    ('pm', 'PM'),
    ('hr', 'HR'),
)
f_name = models.CharField(max_length=50)
s_name = models.CharField(max_length=50)
position = models.CharField(max_length=10, choices=POSITION_SHOICE, default='developer')
work_time = models.DecimalField(max_digits=1000, decimal_places=0)
cost_in_hour = models.DecimalField(max_digits=1000, decimal_places=2)

salary = models.DecimalField(max_digits=10000000, decimal_places=2, default=0)

, прежде чем вставлять данные, необходимо вычислить salaty в таким образом: salary = work_time * cost_in_hour

форма

class WorkerForm(forms.ModelForm):
class Meta:
    model = Worker
    fields = {
        'f_name',
        's_name',
        'position',
        'work_time',
        'cost_in_hour',
    }

view

def worker_create_view(request):
form = WorkerForm(request.POST or None)
if form.is_valid():
    form.save()
    form = WorkerForm()
context = {
    'form': form
}
return render(request, "workers/worker_create.html", context)

Я на самом деле не могу понять, как я могу извлечь данные из элементов словаря с именем 'work_time и 'cost_in_hour'. затем вычислите зарплату, вставьте в словарь и отправьте в базу данных.

PS Если вы можете объяснить или написать ресурс, где я могу прочитать о том, как работает вставка данных в Django, это было бы круто

1 Ответ

0 голосов
/ 19 января 2020

Ответ от android. Позже это будет указано в правильной форме «кода».

На вашем:

 if form.is_valid():
      instance = form.save(commit=False)

      #do what you want with the form fields like
       instance.salary = instance.work_time *cost_in_hour
      # then
       instance.save()

      #continue to response 

Позже будет объяснено лучше

Вы также можете переопределить метод сохранения формы в форме сама для более чистого просмотра.

Надеюсь, что смогу помочь

...