前提・実現したいこと
DjangoでModelFormを使用し、表示されている値を加工しDBを更新したいです。
例えば
DBが0.03の場合100倍して3.00%と表示し、更新する場合は画面の5.00を1/100した0.05をDBに更新したいです。
サンプルソースでは、100倍した値を表示にするところまでです。
更新する際の加工方法がわからず困っています。
該当のソースコード
forms.py
from django import forms from .models import samplde_model class testform(forms.ModelForm): class Meta: model = samplde_model fields=('title','rate')
models.py
from django.db import models class samplde_model(models.Model): title = models.CharField(max_length=10) rate = models.FloatField()
urls.py
from django.urls import path ,include from .views import testfunc from . import views urlpatterns = [ path('',testfunc,name='testfunc'), ]
views.py
from django.shortcuts import render from django.http import HttpResponse from .forms import testform from .models import samplde_model def testfunc(request): if samplde_model.objects.filter(id=1).exists(): obj = samplde_model.objects.get(id=1) else: obj = samplde_model() if (request.method == 'POST'): uf = testform(request.POST,instance=obj) uf.save() obj.rate ='{:.2f}'.format(obj.rate *100) context = { 'form':testform(instance=obj), } return render(request , 'index.html',context)
templates/index.html
<!doctype html> <html lang="ja"> <head> <title>タイトル</title> <!-- Required meta tags --> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <!-- Bootstrap CSS --> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css" integrity="sha384-PsH8R72JQ3SOdhVi3uxftmaW6Vc51MKb0q5P2rRUpPvrszuE4W1povHYgTpBfshb" crossorigin="anonymous"> </head> <body> <br> <table> <form action="" method="post" enctype="multipart/form-data"> {% for field in form %} <tr> <th>{{ field.label_tag }}</th> <td>{{ field }}{% if field.label|lower == 'rate' %}%{% endif %}</td> </tr> {% endfor %} {% csrf_token %} <tr><td></td><td><input type="submit" value ="送信"></td></tr> </form> </table> <!-- Optional JavaScript --> <!-- jQuery first, then Popper.js, then Bootstrap JS --> <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.3/umd/popper.min.js" integrity="sha384-vFJXuSJphROIrBnz7yo7oB41mKfc8JzQZiCq4NCceLEaO4IHwicKwpJf9c9IpFgh" crossorigin="anonymous"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/js/bootstrap.min.js" integrity="sha384-alpBpkh1PFOepccYVYDB4do5UnbKysX5WZXm3XxPqe5iKTfUKjNkCk9SaVuEZflJ" crossorigin="anonymous"></script> </body> </html>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/24 01:46