0
내 선택에서 옵션을 만들려고합니다. selected
. 내 코드에서 각 사용자는 서로에게 점수를 부여합니다. 나는 몇 가지를 시도했지만 작동하지 않습니다. 선택한 값이 사용자에게 주어진 등급과 같을 경우 옵션은 선택된 상태로 유지되어야합니다. 나는 User = get_user_model()
이있는 AbstractUser
을 사용했지만, 쓸모가 없어 보여주지 않기로 결정했습니다.장고, 옵션을 선택할 수 없습니다.
내가 좋아하는 뭔가를 tryed했습니다
{% for user in users %}
<tr>
<td>{{ user.date_joined|date:"d.m.Y H:i" }}</td>
<td>{{ user.username }} </td>
<td>{{ user.id }}</td>
<td>
<select title="selecting_grade" name="grade_{{ user.id }}">
{% for value in values %}
<option value="{{ value.0 }}" {% for a in grades %} {% if a.grade == value.0 %}selected{% endif %} {% endfor %} >{{ value.0 }}</option>
{% endfor %}
</select>
</td>
</tr>
{% endfor %}
models.py
class Score(models.Model):
VALUE = (
(1, "Score 1"),
(2, "Score 2"),
(3, "Score 3"),
(4, "Score 4"),
(5, "Score 5"),
(6, "Score 6"),
(7, "Score 7"),
(8, "Score 8"),
(9, "Score 9"),
(10, "Score 10"),
)
granted_by = models.ForeignKey(settings.AUTH_USER_MODEL, default=0)
granted_to = models.ForeignKey(settings.AUTH_USER_MODEL, default=0, related_name='granted_to')
grade = models.PositiveSmallIntegerField(default=0, choices=VALUE)
def __str__(self):
return str(self.granted_to)
views.py
@login_required(login_url='/login/')
def vote(request):
User = get_user_model()
data = dict()
data['users'] = User.objects.exclude(username=request.user)
if request.method == "POST":
if "rating" in request.POST:
for key in request.POST:
if 'grade_' in key:
awarded_grade = Score.objects.filter(granted_by=request.user,
granted_to__id=key.split('_')[1]).first()
if awarded_grade:
awarded_grade.grade = request.POST.get(key)
awarded_grade.save()
else:
Score.objects.create(granted_by=request.user,
granted_to_id=key.split('_')[1],
grade=request.POST.get(key))
data['values'] = Score.VALUE
data['grade'] = Score.objects.filter(granted_by=request.user)
return render(request, 'vote.html', data)
vote.html
user_grade = Score.objects.filter(granted_by__username='Stalone', granted_to__username='Fane')
user_grade
<QuerySet [<Score: Fane>]>
for x in granted_user:
print(x.grade)
2
나 : 내가 선택한 각 사용자에게 주어진 점수를 얻고에서 사용할 수있는 경우
a = CustomUser.objects.all()
for user in a:
grades = user.granted_to.values()
print(grades)
<QuerySet [{'id': 22, 'grade': 5, 'granted_to_id': 14, 'granted_by_id': 1}]>
<QuerySet [{'id': 21, 'grade': 5, 'granted_to_id': 15, 'granted_by_id': 1}]>
<QuerySet [{'id': 19, 'grade': 5, 'granted_to_id': 16, 'granted_by_id': 1}]>
<QuerySet [{'id': 23, 'grade': 7, 'granted_to_id': 17, 'granted_by_id': 1}]>
<QuerySet [{'id': 20, 'grade': 8, 'granted_to_id': 18, 'granted_by_id': 1}]>
<QuerySet [{'id': 24, 'grade': 7, 'granted_to_id': 19, 'granted_by_id': 1}]>
내가 그들에게있어 보려면,하지만 난에 관리하지 않았다 콘솔에서이 그들과 함께 일해, 어떤 제안? 당신이
data['grade'] = Score.objects.filter(granted_by=request.user)
그러나 vote.html에서 grade
을 전달하는 views.py에서
괜찮 았지만 지금은 한 가지입니다. 모든 사용자에 대해 3 학년이 선택되었음을 나타냅니다. 단 한 명의 사용자에게만 주어졌습니다. http://imgur.com/a/LYyoQ에서 등급을 볼 수 있습니다. 등급 - 등급 | 등급이 –
인 경우 '{% if a.grade == value.0 %}'를이 {{if if user.id == a.granted_to.id and a.grade == value}로 대체해야합니다 .0 %}' –
오, 세상에, 나는 그것이 효과가 있다고 생각한다. –