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']
Вернуться на верх