Django更新视图不​​会保存

时间:2017-09-14 20:36:11

标签: python django

我有此更新视图,但不会保存表单提交。 5分钟前一切正常,然后我添加了用户帖子的编辑功能,突然间,在尝试编辑时没有什么可以保存。

用户应用视图:

class UserEditProfileView(LoginRequiredMixin,UpdateView):
    login_url = '/login/'
    model = UserProfile
    fields = [
            'first_name',
            'profile_pic',
            'location',
            'title',
            'user_type',
            'website',
            'about',
            'twitter',
            'dribbble',
            'github'
            ]
    template_name_suffix = '_edit_form'

    def get_success_url(self):
        userid = self.kwargs['pk']
        return reverse_lazy('users:user_profile',kwargs={'pk': userid})

用户app模型:

class UserProfile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)

    first_name = models.CharField(max_length=50,default='User')
    join_date = models.DateTimeField(default=timezone.now)
    profile_pic = models.ImageField(upload_to='profile_pics',null=True,blank=True)
    location = models.CharField(max_length=150)
    title = models.CharField(max_length=250)
    user_type = models.IntegerField(choices=USER_TYPE_CHOICES,default=1)
    website = models.URLField(max_length=100,blank=True)
    about = models.TextField(max_length=500,default='about')
    twitter = models.CharField(max_length=50,blank=True)
    dribbble = models.CharField(max_length=50,blank=True)
    github = models.CharField(max_length=50,blank=True)

    @receiver(post_save, sender=User)
    def create_user_profile(sender, instance, created, **kwargs):
        if created:
            UserProfile.objects.create(user=instance)

    @receiver(post_save, sender=User)
    def save_user_profile(sender, instance, **kwargs):
        instance.userprofile.save()

    def __str__(self):
        return self.user.username

用户个人资料_edit_form.html:

{% extends "users/base.html" %}

{% block content %}

    <div class="form-title">
        <h2 class="form-title-text">Edit Profile</h2>
    </div>

    <div class="user-forms-base">
        <form method="POST">
            {% csrf_token %}
            {{ form.as_p }}
            <input type="submit" value="Save" />
        </form>
</div>

{% endblock %}

我在更新主页上的帖子时遇到了同样的问题,但是我假设问题是相同的,所以我将能够在那里复制这个解决方案。

1 个答案:

答案 0 :(得分:0)

有人在评论中提到了这一点,但基本上表单返回有效,所以我重写form_invalid以打印可能导致它的任何错误。这表明它在模型级别期望string时发送int。一旦我将其切换回发送int,问题就消失了,现在它可以正常工作了。谢谢你们。