【发布时间】:2022-01-25 18:39:35
【问题描述】:
我正在尝试一个时间表项目。我正在使用 Django 休息框架并使用 Postgres 作为我的数据库。我的客户要求我这样做(如果用户已经存在于数据库中或新用户正在创建他们的帐户,则在 rest API 中提交 post 选项时应触发电子邮件)。
models.py
from django.http import HttpResponse, HttpResponseRedirect, response
from django.db import models
from django.db.models.deletion import CASCADE
from django.utils import timezone
from django.dispatch import receiver
from django.db.models.signals import post_save
from django.conf import settings
from django.core.mail import send_mail
from django.db.models import signals
import datetime
from django.core.mail import EmailMessage
class User(models.Model):
CHOICES= (
('manager','Manager'),
('hr', 'HR'),
('hr manager','HR Manager'),
('trainee','Trainee')
)
firstname = models.CharField(max_length=210)
lastname = models.CharField(max_length=210)
dob=models.DateField(max_length=8)
email=models.EmailField(max_length=254,default=None)
password=models.CharField(max_length=100,default=None)
joiningDate=models.DateTimeField(max_length=8)
userrole=models.CharField(max_length=20,choices=CHOICES,null=True)
def __str__(self):
return self.firstname
class Project(models.Model):
name = models.CharField(max_length=20)
description=models.TextField()
type=models.TextField()
startDate = models.DateTimeField(max_length=10)
endDate=models.DateTimeField(max_length=10)
user=models.ManyToManyField(User)
def __str__(self):
return self.name
class Timesheet(models.Model):
project=models.ManyToManyField(Project)
Submitted_by=models.ForeignKey(default=None,related_name="SubmittedBy",to='User',on_delete=models.CASCADE)
status=models.CharField(max_length=200)
ApprovedBy=models.ForeignKey(default=None,related_name="ApprovedBy",to='User',on_delete=models.CASCADE)
Date=models.DateField()
Hours=models.TimeField(null=True)
def __str__(self):
return self.id
class Client(models.Model):
clientname=models.CharField(max_length=20)
comapny=models.CharField(max_length=200)
location=models.CharField(max_length=200)
email=models.EmailField(max_length=25,default=None)
def __str__(self):
return self.clientname
serializers.py
from django.db.models import fields
from rest_framework import serializers
from.models import User,Project,Timesheet,Client
class UserSerializers(serializers.ModelSerializer):
class Meta:
model= User
fields ='__all__'
password = serializers.CharField(max_length=128, write_only=True, required=True)
class ProjectSerializers(serializers.ModelSerializer):
class Meta:
model= Project
fields= '__all__'
class TimesheetSerializers(serializers.ModelSerializer):
class Meta:
model= Timesheet
fields= '__all__'
class ClientSerializers(serializers.ModelSerializer):
class Meta:
model=Client
fields= '__all__'
viewset.py
from rest_framework import viewsets
from rest_framework import permissions
from.import models
from.import serializers
class UserViewset(viewsets.ModelViewSet):
permission_classes=(permissions.IsAuthenticated,)
queryset=models.User.objects.all()
serializer_class=serializers.UserSerializers
class ProjectViewSet(viewsets.ModelViewSet):
permission_classes=(permissions.IsAuthenticated,)
queryset=models.Project.objects.all()
serializer_class=serializers.ProjectSerializers
class TimesheetViewset(viewsets.ModelViewSet):
permission_classes=(permissions.IsAuthenticated,)
queryset=models.Timesheet.objects.all()
serializer_class=serializers.TimesheetSerializers
class ClientViewSet(viewsets.ModelViewSet):
permission_classes=(permissions.IsAuthenticated,)
queryset=models.Client.objects.all()
serializer_class=serializers.ClientSerializers
router.py
from App.viewsets import ClientViewSet, UserViewset,ProjectViewSet,TimesheetViewset
from rest_framework import routers
router = routers.DefaultRouter()
router.register('User',UserViewset)
router.register('Project',ProjectViewSet)
router.register('Timesheet',TimesheetViewset)
router.register('Client',ClientViewSet)
我是 Django 新手。
【问题讨论】:
标签: python django django-models django-rest-framework