0
私はdjangoの初心者ですが、私はこのプロジェクトで問題があります。私の目標は各ユーザーに1〜10のスコアを与えることです。私の質問は、 "granted_by"を自分自身を除いて "granted_to"にスコア "nota"を与えるにはどうすればいいのですか?私はビューでそれを記述し、それをテンプレートで使用する方法を知らない。私に愚かで簡単な質問をする前に、私のコードにピークをとってください。djangoの各ユーザーにスコアを与える方法
models.py
from django.db import models
from django.conf import settings
VALUE = (
(1, "Nota 1"),
(2, "Nota 2"),
(3, "Nota 3"),
(4, "Nota 4"),
(5, "Nota 5"),
(6, "Nota 6"),
(7, "Nota 7"),
(8, "Nota 8"),
(9, "Nota 9"),
(10, "Nota 10"),
)
class Score(models.Model):
granted_by = models.ForeignKey(settings.AUTH_USER_MODEL, default=0)
granted_to = models.ForeignKey(settings.AUTH_USER_MODEL, default=0, related_name="granted_to")
nota = models.PositiveSmallIntegerField(default=0, choices=VALUE)
views.py
from django.http import HttpResponse, HttpResponseRedirect
from django.contrib.auth import authenticate, login, logout
from django.shortcuts import render
from pro1 import settings
from django.contrib.auth.decorators import login_required
from django.contrib.auth.models import User
from .models import Punctaj
def Login(request):
next = request.GET.get('next', '/home/')
if request.method == "POST":
username = request.POST.get('username')
password = request.POST.get('password')
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
return HttpResponseRedirect(next) # render(request, "login/index.js")
else:
return HttpResponse('Inactive user.')
else:
return HttpResponseRedirect(settings.LOGIN_URL)
return render(request, 'login/login.html', {'redirect_to': next})
def Logout(request):
logout(request)
return HttpResponseRedirect(settings.LOGIN_URL)
@login_required
def Home(request):
user_list = User.objects.all()
context = {
"user_list": user_list,
}
return render(request, "login/home.html", context)
home.html
<form class ="nota" method="POST" action="">{% csrf_token %}
<h3>Scores</h3>
<table class="table table-striped table-bordered">
<thead>
<tr>
<th> User </th>
<th> Scor </th>
<th> Nota finala </th>
</tr>
</thead>
<tbody>
{% for fotbalist in user_list %}
<tr>
<td>{{ fotbalist.username }}</td>
<td><input type="number" name="scor" min="1" max="10"></td>
<td></td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
<p><input type = "submit" value="submit"/></p>
</form>
Unreあなたの問題を解決するためにlatedが、私はあなたの関数の名前を小文字にするでしょう。クラスをCamelCaseにし、小文字で機能させるのが一般的な方法です。 (すなわち 'class Foo():'または 'def bar():') – jape
あなたはあなたの各ユーザにお互いに正しいスコアを与える必要があると言っていますか? 10人のユーザーがいれば、10人のユーザー全員がスコアをつけます。お互いのスコアに加えて、自分自身にスコアを与えないようにする必要がありますか? –
はい、まさに私が欲しいものです –