2 votes

Comment puis-je imprimer uniquement les données de l'utilisateur actuellement connecté dans Django ?

from django.db import models
from django.contrib import auth
from django.urls import reverse
from django.contrib.auth.models import User

models.py

class placement(models.Model):
    user=models.ForeignKey(User,related_name='placeid', null=True, default=None,on_delete=models.CASCADE)
    name=models.CharField(max_length=150, blank=True, null=True)  
    ad_space=models.CharField(max_length=100, blank=False, null=False)  
    PID_TYPE = (  
        ('FN','FORMAT_NATIVE'),  
        ('FNB','FORMAT_NATIVE_BANNER'),  
        ('FI','FORMAT_INTERSTITIAL'),  
        ('FB','FORMAT_BANNER'),  
        ('FMR','FORMAT_MEDIUM,RECT'),  
        ('FRV','FORMAT_REWARDED_VIDEO'),  
    )

    format = models.CharField(max_length=3,choices = PID_TYPE,default = 'FN',blank=False, null=False)
    pid=models.CharField( max_length=50,default='',blank=False, null=False)
    cpm=models.IntegerField(default=0,blank=False, null=False)
    ADS_TYPE=(
        ('FB','FACEBOOK'),
        ('G','GOOGLE'),
    )
source=models.CharField(max_length=2,choices=ADS_TYPE,default='FB',blank=False, null=False)
    comments=models.TextField(default='',blank=False, null=False)  
    objects=models.Manager()

    def __str__(self):
        return self.name

    def get_absolute_url(self):
        return reverse("dashapp:disp")

vues.py

class createPlace(LoginRequiredMixin,CreateView):  
    fields=('name','ad_space','format','pid','cpm','source','comments')
    model=placement  
    template_name='createpl.html'  
    def form_valid(self, form):  
        form.instance.user = User.objects.get(id = self.request.user.id)  
        return super(createPlace, self).form_valid(form)  

class Idlist(LoginRequiredMixin,ListView):

    model=placement
    template_name='placement_list.html'
    def get_queryset(self):
        query_set=super().get_queryset()
        return query_set.filter(placement.objects.filter(user=self.request.user))

Maintenant, quelle requête je dois faire dans Idlist classe dans Views.py pour récupérer uniquement les données relatives à l'utilisateur actuellement connecté. Et la requête que je performe en Idlist me donne l'erreur suivante

Exception Type: ValueError Exception Value: too many values to unpack (expected 2)

Je suis novice en la matière et toute aide serait la bienvenue. Jetez un coup d'œil et aidez un débutant.

0voto

CommuSoft Points 6439

Vous devriez filtrer le queryset lui-même, comme :

class Idlist(LoginRequiredMixin,ListView):

    model=placement
    template_name='placement_list.html'

    def get_queryset(self):
        query_set=super().get_queryset()
        return query_set.filter(user=self.request.user)

Nous appliquons donc un .filter(..) sur le query_set de sorte que nous obtenons seulement placement s avec user es self.request.user .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X