如何添加链接到个人资料?Django 2.1.5

我有网址,但它有错误。例如,链接必须是 example/profile/3,但模板重定向到 example/profile/4。使用信号创建配置文件。我在看,id 用户和 id 配置文件不匹配。也许,这里有错误。模板重定向到 ID 为“用户”的链接,而不是 ID 为“个人资料”的链接!请帮助我。


模型.py


class Profile(models.Model):

    user = models.OneToOneField(User, on_delete=models.CASCADE)

    first_name = models.CharField(max_length=30, blank=True, default='')

    last_name = models.CharField(max_length=30, blank=True, default='')

    location = models.CharField(max_length=30, blank=True, default='')

    #other fields


    def get_absolute_url(self):

        return reverse('profile-detail', args=[str(self.id)])


    def __str__(self):

        return self.user.username



class Post(models.Model):

    user = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)

    #other fields    


    def __str__(self):

        return self.title


    def get_absolute_url(self):

        return reverse('post-detail', kwargs={'pk': self.pk})

信号.py


@receiver(post_save, sender=User)

def create_user_profile(sender, instance, created, **kwargs):

    if created:

        Profile.objects.create(user=instance)


@receiver(post_save, sender=User)

def save_user_profile(sender, instance, **kwargs):

    instance.profile.save()

管理文件


class ProfileAdmin(admin.ModelAdmin):

    list_display = ('user', 'first_name', 'last_name', 'location', 'about_me', 'contacts')


admin.site.register(Profile, ProfileAdmin)

视图.py


class PostCreateView(FormView):

    form_class = PostForm

    template_name = 'post/post_form.html'

    success_url = reverse_lazy('posts')


    def form_valid(self, form):

        response = super(PostCreateView, self).form_valid(form)

        form.instance.user = self.request.user

        form.save()

        return response


class PostDetailView(generic.DetailView):

    model = Post


温温酱
浏览 246回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python