【发布时间】:2020-06-05 19:57:30
【问题描述】:
所以我正在为移动博客应用程序设计一个 REST API,我正在尝试为我想要实现的博客文章实现一个支持功能:
每当用户 U 为特定博客 B 点赞时,客户端将发送一个 POST 请求(带有用户名和博客名称),该请求将在数据库,以便稍后当客户端想知道特定用户是否对特定博客进行了投票时,它可以通过一些文件发送 GET 请求来了解。
我尝试创建投票模型,在其中我定义了与用户和博客文章的多对多关系(请参阅下面的投票模型以更好地理解)
这是我的模型,
class User(models.Model):
username = models.TextField(max_length=30)
def __str__(self):
return self.username
class Post(models.Model):
headline = models.CharField(max_length=200) # the name of the blog
#some other stuff like body of the blog
.
.
def __str__(self):
return self.headline
投票模型,
class Vote(models.Model):
user = models.ManyToManyField(User)
post = models.ManyToManyField(Post)
def __str__(self):
return ("%s %s" %(self.user, self.post))
这不能很好地完成工作,例如,
- 由于多对多关系,它需要 POST 请求中的用户和博客文章(见下文)的 URL,而不仅仅是每个人的名称。
- 即使我们忽略上述问题并使用表单数据发出以下 POST 请求 两次:
{
"user" = [
"http://127.0.0.1:8000/users/1/"
],
"post" = [
"http://127.0.0.1:8000/posts/1/"
],
}
它在数据库中创建了 2 个条目。
而且我仍然无法弄清楚过滤是如何进行的,即客户端应用程序如何通过 GET 请求了解用户和博客文章之间是否存在关系。
我认为这是一个非常糟糕的设计。
请在我当前的设计中提出更好的替代方案或改进(如果可能)。
【问题讨论】:
标签: django django-models django-rest-framework django-views