【发布时间】:2022-01-31 23:19:51
【问题描述】:
我正在制作一个电影观看网站,其中有用户和电影,并且用户模型有一个引用电影模型的 ManyToMany 字段。它称为 WatchList,经过身份验证的用户可以将他们想要的任何电影添加到此监视列表中。
我的问题是我想要一个只获取电影 ID 并将其添加到用户的观看列表的 API。
这些是我的模型和序列化程序,我正在尝试制作一个视图来实现这个 API。
# models.py
class Film(models.Model):
filmID = models.AutoField(primary_key=True)
title = models.CharField(max_length=150)
# ...
class User(AbstractBaseUser, PermissionsMixin):
userID = models.AutoField(primary_key=True)
username = models.CharField(max_length=100, unique=True, validators=[RegexValidator(regex="^(?=[a-z0-9._]{5,20}$)(?!.*[_.]{2})[^_.].*[^_.]$")])
email= models.EmailField(max_length=100, unique=True, validators=[EmailValidator()])
name = models.CharField(max_length=100)
watchList = models.ManyToManyField(Film)
objects = UserManager()
USERNAME_FIELD = 'username'
# serializers.py
class WatchListSerializer(serializers.ModelSerializer):
class FilmSerializer(serializers.ModelSerializer):
model = Film
fields = ('filmID', 'title',)
read_only_fields = ('filmID', 'title')
film_set = FilmSerializer(read_only=True, many=True)
class Meta:
model = get_user_model()
fields = ('userID', 'film_set')
read_only_fields = ('userID',)
# views.py
class WatchListAddView(...):
pass
可以更改序列化程序。但这种显示我想要的 api 是什么。身份验证部分已经处理完毕,因此假设对视图的任何请求都来自经过身份验证的用户。
【问题讨论】:
标签: django django-rest-framework django-views django-serializer