Я думаю, что делаю здесь простую ошибку, но не могу ее решить. Я пытаюсь создать поддельные данные и проанализировать их с помощью разных типов пользователей, которые затем помещаю в диаграмму ap ie. Вот мои модели models.py :
from django.db import models
import factory
import factory.django
import factory.fuzzy
from datetime import datetime
from django.core.validators import MinValueValidator, MaxValueValidator
from faker import Faker
from faker.providers import BaseProvider
import random
class User(models.Model):
name = models.CharField(max_length=64)
address = models.CharField(max_length=128)
phone_number = models.CharField(max_length=32)
access_date = models.DateTimeField(default=datetime.now(), blank=True)
session_duration = models.IntegerField(default = 0, validators=[MinValueValidator(0),
MaxValueValidator(5)])
traffic_source = models.CharField(max_length=32)
created_account = models.BooleanField(default=True)
paid_customer = models.BooleanField(default=True)
user_type = models.CharField(max_length=128, default = 'all_others')
class UserFactory(factory.django.DjangoModelFactory):
class Meta:
model = User
name = factory.Faker('name')
address = factory.Faker('address')
phone_number = factory.Faker('phone_number')
access_date = factory.Faker('date')
session_duration = factory.Faker('random_int')
traffic_source = factory.fuzzy.FuzzyChoice(['Google', 'Facebook'])
created_account = factory.Faker('pybool')
paid_customer = factory.Faker('pybool')
user_type = factory.fuzzy.FuzzyChoice(['registered', 'paid', 'all_others'])
И мои views.py
:
from django.shortcuts import render
from django.db.models import Sum
from django.http import JsonResponse
from mysite.models import User
def home(request):
return render(request, 'home.html')
def pie_chart(request):
labels = [User.user_type]
registered_user = User.objects.filter('registered')
paid_user = User.objects.count('paid')
all_others = User.objects.count('all_others')
data = [registered_user, paid_user, all_others]
#queryset = User.objects.order_by('-access_date')
#for user in queryset:
#labels.append(user.user_type)
#data.append(user.user_count)
return render(request, 'pie_chart.html', {
'labels': labels,
'data': data,
})
Я только начинаю работать с наборами запросов, поэтому любая помощь приветствуется.
Edit: это сообщение об ошибке, которое я получаю:
Traceback (последний вызов последним): File "/Users/ryan/anaconda3/lib/python3.7/site-packages/django /core/handlers/exception.py ", строка 34, во внутреннем файле ответа = get_response (запрос)" /Users/ryan/anaconda3/lib/python3.7/site-packages/django/core/handlers/base. py ", строка 115, в _get_response response = self.process_exception_by_middleware (e, request) File" /Users/ryan/anaconda3/lib/python3.7/site-packages/django/core/handlers/base.py ", строка 113, в _get_response response = wrapped_callback (request, * callback_args, ** callback_kwargs) Файл "/Users/ryan/All_Django/FinalProject/mysite/views.py", строка 15, в pie_chart registration_user = User.objects.filter (' зарегистрированный ') Файл "/Users/ryan/anaconda3/lib/python3.7/site-packages/django/db/models/manager.py", строка 82, в manager_met hod return getattr (self.get_queryset (), name) (* args, ** kwargs) Файл "/Users/ryan/anaconda3/lib/python3.7/site-packages/django/db/models/query.py ", строка 904, в фильтре return self._filter_or_exclude (False, * args, ** kwargs) File" /Users/ryan/anaconda3/lib/python3.7/site-packages/django/db/models/query. py ", строка 923, в _filter_or_exclude clone.query.add_q (Q (* args, ** kwargs)) File" /Users/ryan/anaconda3/lib/python3.7/site-packages/django/db/models /sql/query.py ", строка 1350, в предложении add_q, _ = self._add_q (q_object, self.used_aliases) File" /Users/ryan/anaconda3/lib/python3.7/site-packages/django/ db / models / sql / query.py ", строка 1381, в _add_q check_filterable = check_filterable, File" /Users/ryan/anaconda3/lib/python3.7/site-packages/django/db/models/sql/query .py ", строка 1247, в build_filter arg, value = filter_expr
Тип исключения: ValueError at / mysite / p ie -chart / Exception Value: слишком много значений для распаковки (ожидается 2)