为一周中的几天创建模型,并在 Schedule 模型中使用 M2M 字段
模型.py
class DaysOfWeek(models.Model):
name = models.CharField(verbose_name="Name", max_length=10)
def __str__(self):
return self.name
class Meta:
ordering = ('id',)
class Schedule(models.Model):
name = models.CharField(verbose_name="Name", max_length=50)
week_days = models.ManyToManyField(DaysOfWeek, related_name="schedules", verbose_name="Days of Week")
def __str__(self):
return self.name
序列化程序.py
class ScheduleSerializer(serializers.ModelSerializer):
week_days = serializers.PrimaryKeyRelatedField(
queryset=DaysOfWeek.objects.all(), many=True,)
class Meta:
model = Schedule
fields = ['name', 'week_days']
视图.py
from rest_framework import viewsets
class ScheduleView(viewsets.ModelViewSet):
serializer_class = ScheduleSerializer
queryset = Schedule.objects.all()
pagination_class = None
网址.py
因为我们在 views.py 中使用 ModelViewSet,所以我们可以使用路由器来设置 URL,并使用带有所有 http 方法(get、put、patch、delete 等)的单个 URL
from rest_framework.routers import DefaultRouter
router = DefaultRouter()
router.register(r'schedule', ScheduleView, basename='schedule')
在邮递员中,使用/schedule/ 来创建和获取列表。
要获取对象、更新或删除,请使用/schedule/<id>/