用户帖子的Django URL

时间:2017-11-27 19:48:21

标签: django django-urls

我有会员模型博客模型。我的博客模型叫做 MyPosts MyPosts用户字段是会员的FK。 要查看用户的详细信息页面,我的网址类型如下:

url(r'member-detail/(?P<pk>\d+)(?:/(?P<slug>[\w\d-]+))?/$', views.MemberDetailView.as_view(), name='member-detail'),

对于博文,我有以下内容:

url(r'my-posts/$',views.postlistall.as_view(), name='my-posts'),

现在,我如何安排 my-posts url 查看用户的帖子?

我的意思是,会员详细信息视图的网址是:http://127.0.0.1:8000 / directory / membership -detail/12 / michael /

但我的帖子链接是:http://127.0.0.1:8000 / directory / my-post /

如何将其转换为http://127.0.0.1:8000/directory/12/michael/my-posts/或类似的内容,这可能是最好的?

另外,他们有两个不同的视图和模板。如何在他/她的详细信息页面上显示用户的最后5个帖子。我在结合2个观点时失败了。

请求更新

我的模特:

class Member(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='members')
    member_name = models.CharField(max_length=120)
    member_lastname = models.CharField(max_length=120)
    member_address = models.CharField(max_length=200, blank=True, null=True)
    member_spoken_language = models.CharField(max_length=120, blank=True, null=True) 
etc..

     def __str__(self):
        return self.member_name

    def get_absolute_url(self):
        return reverse('memberships:dashboard')

    def _get_unique_slug(self):
        slug = slugify(self.member_name)
        unique_slug = slug
        num = 1
        while Member.objects.filter(slug=unique_slug).exists():
            unique_slug = '{}-{}'.format(slug, num)
            num += 1
        return unique_slug

    def save(self, *args, **kwargs):
        if not self.slug:
            self.slug = self._get_unique_slug()
        super().save()

MyPosts模型:

class MyPosts(models.Model):
    user = models.ForeignKey(Member, on_delete=models.CASCADE, blank=False, null=True, related_name='postcreator')
    title = models.CharField(max_length=120)
    content = models.TextField(max_length=240,)
    publishing_date = models.DateTimeField(auto_now_add=True)
    update_date = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.title

    class Meta:
        ordering = ['-publishing_date', 'id']

我的观点:

class MemberDetailView(generic.DetailView):
    model= Member
    template_name = 'directory/member-detail.html'

    def get_queryset(self):
        return Member.objects.all()

class postlistall(generic.ListView):
    template_name = 'directory/my-posts.html'  
    context_object_name = 'post_list'
    paginate_by = 10

    def get_queryset(self):
        return MyPosts.objects.filter(user=self.request.user.id)

0 个答案:

没有答案