我正在开发一个 Comment 应用程序,我希望我的 Commentserializer 显示每个 Comment 实例的确切 URL。我知道我必须使用 Comment 模型的 get_absolute_url 。但我无法将我的视图名称从我的路由器连接到 get_absolute_url。
这是我的模型:
class Comment(models.Model):
content = models.TextField(max_length=150)
author = models.ForeignKey(
User,
on_delete = models.CASCADE
)
content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
object_id = models.PositiveIntegerField(blank=True)
content_object = GenericForeignKey('content_type', 'object_id')
parent = models.ForeignKey(
"self",
on_delete = models.CASCADE,
blank=True,
null=True
)
datestamp = models.DateTimeField(auto_now_add=True)
objects = CommentManager()
def __str__(self):
return str(self.content[:30])
def save(self):
self.object_id = self.parent.id
super(Comment, self).save()
def children(self):
return Comment.objects.filter(parent=self)
def get_absolute_url(self):
return reverse("comments-details", args=[str(self.id)])
@property
def is_parent(self):
if self.parent is None:
return False
return True
这是我的路由器:
router = router = routers.SimpleRouter()
router.register('api/comments', CommentViewSet)
urlpatterns = router.urls
如您所见,我正在尝试使用“comment-details”作为视图名称。最终目标是显示这样的 JSON:
{ url : 'blabla/comments/{pk}/details }