Estoy tratando de obtener los usuarios que estoy marcando como True en mi sitio web en data['checked_users'] :
models.py
class Player(models.Model): jucator = models.ForeignKey(settings.AUTH_USER_MODEL, default=1, related_name='jucator') porecla = models.CharField(max_length=50, null=True, blank=True) selectat = models.BooleanField(default=False) def __str__(self): return u'%s' % self.jucator
views.py
def check_user(request): data = dict() data['players'] = Player.objects.all() if request.method == 'POST': list_of_checks = request.POST.getlist('checks[]') # data['checked_users'] = list_of_checks data['checked_users'] = Player.objects.filter(jucator__in=list_of_checks) return render(request, 'checkbox.html', data)
checkbox.html
<body> {% block content %} <form action="" method="POST">{% csrf_token %} <table> {% if request.user.is_superuser %} {% for user in players %} <tr> <td><input type="checkbox" name="checks[]" value="{{ user.jucator }}" title="selected_players">{{ user.jucator }}<br></td> </tr> {% endfor %} <tr> <td><input type="submit" name="submit" value="Submit"></td> </tr> {% else %} {% for user in players %} <tr><td>{{ user.jucator }}</td></tr> {% endfor %} {% endif %} </table> {% for player in checked_users %} {{ player }} {% endfor %} </form> {% endblock %} </body>Si pruebo esto, les muestra a los jugadores:
data['checked_users'] = list_of_checksSi pruebo con el filtro, me sale este error:
invalid literal for int() with base 10: 'Stalone'Debe poner dentro value="{{ user.jucator }}" la id real del objeto jucator . No el objeto jucator en sí.
Entonces, cambia a esto: value="{{ user.jucator.id }}" . Ahora puede consultar con Player.objects.filter(jucator__in=list_of_checks) ya que list_of_checks una lista de números enteros (los id de jucator s).