見出し画像

Django➕Vueで顧客管理サイト作成❾

❶.クライアントにメモを追加する

追加手順は下記の通りです


-datebaseモデル作成


ファイルのパス(path):ganarcrm_django/client/models.py

from django.contrib.auth.models import User
from django.db import models
from team.models import Team
class Client(models.Model):
   team = models.ForeignKey(Team, related_name='clients', on_delete=models.CASCADE)
   name = models.CharField(max_length=255)
   contact_person = models.CharField(max_length=255)
   email = models.EmailField()
   phone = models.CharField(max_length=255)
   website = models.CharField(max_length=255, blank=True, null=True)
   created_by = models.ForeignKey(User, related_name='clients', on_delete=models.CASCADE)
   created_at = models.DateTimeField(auto_now_add=True)
   modified_at = models.DateTimeField(auto_now=True)
class Note(models.Model):
   team = models.ForeignKey(Team, related_name='notes', on_delete=models.CASCADE)
   client = models.ForeignKey(Client, related_name='notes', on_delete=models.CASCADE)
   name = models.CharField(max_length=255)
   body = models.TextField(blank=True, null=True)
   created_by = models.ForeignKey(User, related_name='notes', on_delete=models.CASCADE)
   created_at = models.DateTimeField(auto_now_add=True)
   modified_at = models.DateTimeField(auto_now=True)

    

-シリアライザー作成

ファイルのパス(path):ganarcrm_django/client/serializers.py

from rest_framework import serializers
from .models import Client, Note
class ClientSerializer(serializers.ModelSerializer):    
   class Meta:
       model = Client
       read_only_fields = (
           'created_by',
           'created_at',
           'modified_at',
       ),
       fields = (
           'id',
           'name',
           'contact_person',
           'email',
           'phone',
           'website',
           'created_at',
           'modified_at',
       )
class NoteSerializer(serializers.ModelSerializer):
   class Meta:
       model = Note
       fields = (
           'id',
           'name',
           'body',
       )


-Views作成

ファイルのパス(path):ganarcrm_django/client/views.py

from django.contrib.auth.models import User
from django.shortcuts import render
from rest_framework import viewsets
from team.models import Team
from .models import Client, Note
from .serializers import ClientSerializer, NoteSerializer
class ClientViewSet(viewsets.ModelViewSet):
   serializer_class = ClientSerializer
   queryset = Client.objects.all()
   
   def perform_create(self, serializer):
       team = Team.objects.filter(members__in=[self.request.user]).first()
       serializer.save(team=team, created_by=self.request.user)
   def get_queryset(self):
       team = Team.objects.filter(members__in=[self.request.user]).first()
       return self.queryset.filter(team=team)
class NoteViewSet(viewsets.ModelViewSet):
   serializer_class = NoteSerializer
   queryset = Note.objects.all()
   def get_queryset(self):
       team = Team.objects.filter(members__in=[self.request.user]).first()
       client_id = self.request.GET.get('client_id')
       return self.queryset.filter(team=team).filter(client_id=client_id)
   def perform_create(self, serializer):
       team = Team.objects.filter(members__in=[self.request.user]).first()
       client_id = self.request.data['client_id']
       serializer.save(team=team, created_by=self.request.user, client_id=client_id)


-Urls作成

ファイルのパス(path):ganarcrm_django/client/urls.py

from django.urls import path, include
from rest_framework.routers import DefaultRouter
from .views import ClientViewSet, NoteViewSet
router = DefaultRouter()
router.register('clients', ClientViewSet, basename='clients')
router.register('notes', NoteViewSet, basename='notes')
urlpatterns = [
   path('', include(router.urls)),
]


-メモを追加するためのVueページ作成


-サーバーに情報を送信する

ここから先は

29,537字 / 3画像
この記事のみ ¥ 998

この記事が気に入ったらサポートをしてみませんか?