首页 > 解决方案 > 从表单中提取数据

问题描述

我刚刚开始学习 Django,现在我正在尝试了解如何在 db 中插入数据,如何处理来自模板的数据等。我的问题是关于从模板中的表单(元类)中提取数据。

这是我的代码:

模型

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',
    }

看法

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 中插入数据是如何工作的,那会很酷

标签: pythondjangodjango-formsdjango-templatesdjango-views

解决方案


来自安卓的回答。稍后将把它放在适当的“代码”表单上。

在你的:

 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 

稍后会更好地解释

您还可以覆盖表单本身的表单保存方法以获得更清晰的视图。

希望我能帮上忙


推荐阅读