Как я могу распечатать только текущие данные пользователя в Django? - PullRequest
0 голосов
/ 17 ноября 2018
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")

views.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))

Теперь Какой запрос я должен сделать в Idlist классе в Views.py, чтобы получить только текущие данные, связанные с пользователем. И запрос, который я выполняю в Idlist, выдаёт мне ошибку как

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

Я новичок в этом, и любая помощь будет лучше для меня. Пожалуйста, посмотрите и помогите новичку

1 Ответ

0 голосов
/ 17 ноября 2018

Вам следует отфильтровать сам набор запросов, например:

class Idlist(LoginRequiredMixin,ListView):

    model=placement
    template_name='placement_list.html'

    def get_queryset(self):
        query_set=super().get_queryset()
        return query_set.<b>filter(user=self.request.user)</b>

Таким образом, мы применяем .filter(..) к query_set таким образом, что мы получаем только placement s с user, равным self.request.user.

...