小编ian*_*ian的帖子

Django F() 和 ExpressionWrapper

我试图避免数据库命中我的views.py。如果我使用 F() 和 ExpressionWrapper,我是否对数据库进行查询?我正在尝试优化我的代码,当我阅读文档时有点困惑。我还包含了 Models.py 以供参考。我正在对我正在工作的网络应用程序进行优化。

视图.py

from django.shortcuts import render
from django.db.models import F, Q, Count, Sum, ExpressionWrapper, IntegerField
from .models import Student, Subject, Enrollment


def home(request):
    student = Student.objects.all()
    subject = Subject.objects.all()
    sem_score = Enrollment.objects.all().update(sem_score=ExpressionWrapper((F("prelim_score") + F("midterm_score") + F("final_score"))/3, output_field=IntegerField()))
    enrollment = Enrollment.objects.all()
    num_student = Enrollment.objects.all().count()
    context = {"student":student, "subject":subject, "enrollment":enrollment, "num_student":num_student}
    return render(request, 'core/home.html', context)
Run Code Online (Sandbox Code Playgroud)

模型.py

class Professor(models.Model):
    name = models.CharField(max_length=50)
    
    def __str__(self):
        return self.name
    
class Student(models.Model):
    name = models.CharField(max_length=50)
    
    def __str__(self):
        return self.name
    
class Course(models.Model):
    name …
Run Code Online (Sandbox Code Playgroud)

python django django-queryset django-views

1
推荐指数
1
解决办法
8406
查看次数

DRF“ObtainAuthToken”对象没有属性“request”

每次用户登录时我都会收到错误。该函数应显示与用户关联的令牌,但我收到一条错误消息“ObtainAuthToken”对象,该对象没有属性“request”。

视图.py

from rest_framework.authtoken.serializers import AuthTokenSerializer
from rest_framework.authtoken.views import ObtainAuthToken

class LoginView(generics.CreateAPIView):
    serializer_class = AuthTokenSerializer
    
    def create(self, request):
        return ObtainAuthToken().post(request)
Run Code Online (Sandbox Code Playgroud)

已安装的应用程序

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    
    'core',
    
    'rest_framework',
    'rest_framework.authtoken',
]
Run Code Online (Sandbox Code Playgroud)

django-rest-framework

0
推荐指数
1
解决办法
808
查看次数