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ページ作成
-サーバーに情報を送信する
この記事が気に入ったらサポートをしてみませんか?