models.py:
import datetime
from django.db import models
from pygments.lexers import get_all_lexers
LEXERS = [item for item in get_all_lexers() if item[1]]
class Classname(models.Model):
class_name = models.CharField(max_length=8)
def __str__(self):
return self.class_name
class Sectionname(models.Model):
class_name = models.ForeignKey(Classname)
section_name = models.CharField(max_length=1, default='A')
def __str__(self):
return self.section_name
class Teachername(models.Model):
classname = models.ForeignKey(Classname, verbose_name='class Name')
secname = models.ForeignKey(Sectionname, verbose_name='sectionname')
teachname = models.CharField(max_length=50, verbose_name='teacher Name')
def __str__(self):
return self.teachname
class Attendancename(models.Model):
teacher_name = models.ForeignKey(Teachername)
date = models.DateField('Date')
intime = models.TimeField('IN-TIME')
outtime = models.TimeField('OUT-TIME')
def hours_conversion(self):
tdelta = (datetime.datetime.combine(datetime.date.today(),self.outtime) - datetime.datetime.combine(datetime.date.today(),self.intime))
hours, minutes = tdelta.seconds//3600, (tdelta.seconds//60)%60
return '{0}hrs {1}mins'.format(hours, minutes)
def __str__(self):
return "%s" %self.teacher_name
serializers.py:
from django.forms import widgets
from rest_framework import serializers
from .models import Classname, Sectionname, Teachername, Attendancename
class ClassSerializer(serializers.ModelSerializer):
class Meta:
model = Classname
fields = ('id', 'class_name',)
class SectionSerializer(serializers.ModelSerializer):
class Meta:
model = Sectionname
fields = ('id', 'class_name', 'section_name')
class TeacherSerializer(serializers.ModelSerializer):
class Meta:
model = Teachername
fields = ('id', 'classname', 'secname', 'teachname')
class AttendanceSerializer(serializers.ModelSerializer):
class Meta:
model = Attendancename
fields = ('id', 'teacher_name', 'date', 'intime', 'outtime')
我想在我的模型中添加所有者字段以强制执行DRF身份验证系统。是否有必要在上面的所有模型中添加'owner'
字段?
我正在关注django-rest-framework的教程我有几个模型如上所述。是否可以为此身份验证目的制作单个模型,并根据该模型和&amp ;;设置序列化程序文件中的权限。在单一模型的基础上访问所有模型?
答案 0 :(得分:0)
我想在模型中添加所有者字段以强制执行DRF身份验证系统
您不需要所有者字段来强制执行"认证。
此处详细说明如何在DRF中启用和处理身份验证:http://www.django-rest-framework.org/api-guide/authentication/
所有者字段仅对某些权限案例感兴趣。
如果您查看docs,您会发现DRF已经附带IsAuthenticated
,IsAdmin
等常见案例的权限。根据用户的状态(登录/注销),他或她可能会看到某些资源。
但是,如果您要设置object level permissions,则需要所有者字段(或类似内容)。
如果某个用户确实与某个对象相关联,您还能判断出什么呢?
对于所有这些,默认的用户模型(来自django.contrib.auth
)应该是完全足够的,我认为不需要任何额外的模型,假设您使用the standard Authentication Backends之一将request.user
设置为用户的实例。