Django-rest-framework: Пользовательские конечные точки третьего уровня
Я новичок в Django rest framework и пытаюсь достичь 3-го уровня пользовательских конечных точек. Я просто хочу, чтобы кто-нибудь посоветовал, как решить проблему 3-го уровня пользовательских конечных точек.
Я прочитал официальный документ: https://www.django-rest-framework.org/api-guide/routers/, но я запутался, чтобы решить это. Пожалуйста, нужен совет.
Для достижения этих конечных точек:
/admin/advisor/(default admin)
/user/<user-id>/advisor
/user/<user-id>/advisor/<advisor-id>/
/user/<user-id>/advisor/booking/
models.py
from django.db import models
class Advisor(models.Model):
advisor_name = models.CharField(max_length=200)
advisor_photo_url = models.ImageField(null=True, blank=True)
def __str__(self):
return self.advisor_name
class User(models.Model):
advisor_fk = models.ForeignKey(Advisor, related_name='advisors', on_delete=models.CASCADE)
name = models.CharField(max_length=200)
email = models.CharField(max_length=200)
password = models.CharField(max_length=200)
def __str__(self):
return self.name
class Booking(models.Model):
user_fk = models.ForeignKey(User, related_name='users', on_delete=models.CASCADE)
booking = models.DateTimeField()
def __str__(self):
return '{0}'.format(self.user_fk)
serializers.py
from rest_framework import serializers
from usersite.models import Advisor, User, Booking
from django.utils import timezone
class DateTimeFieldWihTZ(serializers.DateTimeField):
def to_representation(self, value):
value = timezone.localtime(value)
return super(DateTimeFieldWihTZ, self).to_representation(value)
class AdvisorSerializer(serializers.ModelSerializer):
class Meta:
model = Advisor
fields = ['advisor_name', 'advisor_photo_url', 'id']
class BookingSerializer(serializers.ModelSerializer):
booking = DateTimeFieldWihTZ(format='%I:%M%p') #%b %d %Y %I:%M%p
class Meta:
model = Booking
fields = ['user_fk', 'booking']
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ['advisor_fk', 'name', 'email', 'password']