前提・実現したいこと
※Python初学者ですので伝わりづらい点もあるかもしれませんがよろしくお願いします。
1.NewPointView関数内でformを使って、新しいポイントを作成。
2.作成したpointと同じnameのCustomUserのtotal_pointを増加させたいと思っています。
view.pyの中に customuser.total_point += point.num
を作成したのですが、total_pointには全く反応がありません。
total_pointを増加させるために修正すべき点を教えていただけますと幸いです。よろしくお願いします。
該当のソースコード
# app/views.py from django.shortcuts import render, get_object_or_404, redirect from django.contrib import messages from django.contrib.auth.decorators import login_required from .models import CustomUser, Point, Text from .forms import NewPointForm @login_required def point_new(request): if request.method == "POST": form = NewPointForm(request.POST) if form.is_valid(): point = form.save() customuser = get_ object_or_404(CustomUser, username = point.name) customuser.total_point += point.num messages.success(request, "ポイントを作成しました!") return redirect('app:modify') else: form = NewPointForm() return render(request, 'app/modify.html', {'form': form})
# app/models.py from django.contrib.auth.models import AbstractUser from django.db import models class CustomUser(AbstractUser): """拡張ユーザーモデル""" class Meta: db_table = "custom_user" total_point = models.PositiveIntegerField(verbose_name='ポイント', default=0) updated_at = models.DateTimeField(auto_now=True) def __str__(self): return self.username class Text(models.Model): text = models.CharField(max_length=100) def __str__(self): return self.text class Point(models.Model): num = models.PositiveIntegerField(verbose_name='ポイント', default=0) created_at = models.DateTimeField(auto_now=True) name = models.ForeignKey(CustomUser, on_delete=models.PROTECT) text = models.ForeignKey(Text, on_delete=models.PROTECT)
# app/forms.py from django import forms from django.forms import ModelForm from .models import Point class NewPointForm(ModelForm): class Meta: model = Point fields = ['num', 'name', 'text']
# app/urls.py from django.urls import path from . import views app_name = 'app' urlpatterns = [ path('modify/', views.point_new, name='modify'), ]
# config/urls.py from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('', include('app.urls')) ]
# app/modify.html {% extends 'app/base.html' %} {% block content %} {% if request.user.is_authenticated %} <h2>管理画面</h2> <form action="{% url 'app:modify' %}" method="POST"> {% csrf_token %} <table> <tr> <th>ポイント</th> <td>{{ form.num }}</td> </tr> <tr> <th>名前</th> <td>{{ form.name }}</td> </tr> <tr> <th>内容</th> <td>{{ form.text }}</td> </table> <button type="submit" class="btn">保存</button> {% endif %} {% endblock %}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/15 16:41