Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django模型表单数据未保存_Python_Django_Forms_Django Models_Django Forms - Fatal编程技术网

Python Django模型表单数据未保存

Python Django模型表单数据未保存,python,django,forms,django-models,django-forms,Python,Django,Forms,Django Models,Django Forms,我有一个用户档案模型,其中有“bio”和“cover”等字段,表示用户档案的一般信息等。。 我希望这两件事能够被用户编辑。我做了从URL.py到forms.py到views.py再到template等所有的事情,看起来我可以提交数据,看起来数据正在验证,但是数据没有被保存。。我不知道怎么做 这是我的文件,我包含了比需要更多的代码,只是为了看看其他地方的代码是否有问题 注意,不工作的代码是名称中包含“general”的代码 url.py from django.conf.urls import i

我有一个用户档案模型,其中有“bio”和“cover”等字段,表示用户档案的一般信息等。。 我希望这两件事能够被用户编辑。我做了从URL.py到forms.py到views.py再到template等所有的事情,看起来我可以提交数据,看起来数据正在验证,但是数据没有被保存。。我不知道怎么做

这是我的文件,我包含了比需要更多的代码,只是为了看看其他地方的代码是否有问题

注意,不工作的代码是名称中包含“general”的代码

url.py

from django.conf.urls import include, url
from . import views

app_name = 'profili'

urlpatterns = [
    #profile
    url(r'^$', views.ProfilePage, name='profile'),
    url(r'^edit/$', views.EditProfile, name='edit_profile'),
    url(r'^edit/general/$', views.EditGeneralProfile, name='edit_general_profile'),
    url(r'^edit/password$', views.EditPassword, name='edit_password'),
    url(r'^edit/delete/$', views.DeleteProfile, name='delete_profile'),
]
def EditProfile(request):

    if request.method == 'POST':
        form = EditProfileForm(request.POST, request.FILES, instance=request.user)
        if form.is_valid():
            form.save()
            return redirect('/profile')


    else:
        form = EditProfileForm(instance=request.user)
        formpw = PasswordChangeForm(user=request.user)
        generalform = EditGeneralProfileForm(instance=request.user)
        args = {
            'form': form,
            'formpw': formpw,
            'generalform': generalform,
        }
        return render(request, 'profili/editprofile.html', args)



@login_required
def EditGeneralProfile(request):
    generalform = EditGeneralProfileForm(request.POST, request.FILES, instance=request.user)
    if generalform.is_valid():
        generalform.save()
        return redirect('/profile')
    else:
        print('THIS IS NOT WOOORRKIINNGGG')
class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    followall = models.ManyToManyField(User, related_name='followfriend')
    bio = models.TextField(max_length=100, default='', blank=True)
    cover = models.FileField(blank=True)

@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 EditGeneralProfileForm(forms.ModelForm):

    class Meta:
        model = Profile
        fields = ('bio', 'cover')
视图.py

from django.conf.urls import include, url
from . import views

app_name = 'profili'

urlpatterns = [
    #profile
    url(r'^$', views.ProfilePage, name='profile'),
    url(r'^edit/$', views.EditProfile, name='edit_profile'),
    url(r'^edit/general/$', views.EditGeneralProfile, name='edit_general_profile'),
    url(r'^edit/password$', views.EditPassword, name='edit_password'),
    url(r'^edit/delete/$', views.DeleteProfile, name='delete_profile'),
]
def EditProfile(request):

    if request.method == 'POST':
        form = EditProfileForm(request.POST, request.FILES, instance=request.user)
        if form.is_valid():
            form.save()
            return redirect('/profile')


    else:
        form = EditProfileForm(instance=request.user)
        formpw = PasswordChangeForm(user=request.user)
        generalform = EditGeneralProfileForm(instance=request.user)
        args = {
            'form': form,
            'formpw': formpw,
            'generalform': generalform,
        }
        return render(request, 'profili/editprofile.html', args)



@login_required
def EditGeneralProfile(request):
    generalform = EditGeneralProfileForm(request.POST, request.FILES, instance=request.user)
    if generalform.is_valid():
        generalform.save()
        return redirect('/profile')
    else:
        print('THIS IS NOT WOOORRKIINNGGG')
class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    followall = models.ManyToManyField(User, related_name='followfriend')
    bio = models.TextField(max_length=100, default='', blank=True)
    cover = models.FileField(blank=True)

@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 EditGeneralProfileForm(forms.ModelForm):

    class Meta:
        model = Profile
        fields = ('bio', 'cover')
型号.py

from django.conf.urls import include, url
from . import views

app_name = 'profili'

urlpatterns = [
    #profile
    url(r'^$', views.ProfilePage, name='profile'),
    url(r'^edit/$', views.EditProfile, name='edit_profile'),
    url(r'^edit/general/$', views.EditGeneralProfile, name='edit_general_profile'),
    url(r'^edit/password$', views.EditPassword, name='edit_password'),
    url(r'^edit/delete/$', views.DeleteProfile, name='delete_profile'),
]
def EditProfile(request):

    if request.method == 'POST':
        form = EditProfileForm(request.POST, request.FILES, instance=request.user)
        if form.is_valid():
            form.save()
            return redirect('/profile')


    else:
        form = EditProfileForm(instance=request.user)
        formpw = PasswordChangeForm(user=request.user)
        generalform = EditGeneralProfileForm(instance=request.user)
        args = {
            'form': form,
            'formpw': formpw,
            'generalform': generalform,
        }
        return render(request, 'profili/editprofile.html', args)



@login_required
def EditGeneralProfile(request):
    generalform = EditGeneralProfileForm(request.POST, request.FILES, instance=request.user)
    if generalform.is_valid():
        generalform.save()
        return redirect('/profile')
    else:
        print('THIS IS NOT WOOORRKIINNGGG')
class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    followall = models.ManyToManyField(User, related_name='followfriend')
    bio = models.TextField(max_length=100, default='', blank=True)
    cover = models.FileField(blank=True)

@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 EditGeneralProfileForm(forms.ModelForm):

    class Meta:
        model = Profile
        fields = ('bio', 'cover')
forms.py

from django.conf.urls import include, url
from . import views

app_name = 'profili'

urlpatterns = [
    #profile
    url(r'^$', views.ProfilePage, name='profile'),
    url(r'^edit/$', views.EditProfile, name='edit_profile'),
    url(r'^edit/general/$', views.EditGeneralProfile, name='edit_general_profile'),
    url(r'^edit/password$', views.EditPassword, name='edit_password'),
    url(r'^edit/delete/$', views.DeleteProfile, name='delete_profile'),
]
def EditProfile(request):

    if request.method == 'POST':
        form = EditProfileForm(request.POST, request.FILES, instance=request.user)
        if form.is_valid():
            form.save()
            return redirect('/profile')


    else:
        form = EditProfileForm(instance=request.user)
        formpw = PasswordChangeForm(user=request.user)
        generalform = EditGeneralProfileForm(instance=request.user)
        args = {
            'form': form,
            'formpw': formpw,
            'generalform': generalform,
        }
        return render(request, 'profili/editprofile.html', args)



@login_required
def EditGeneralProfile(request):
    generalform = EditGeneralProfileForm(request.POST, request.FILES, instance=request.user)
    if generalform.is_valid():
        generalform.save()
        return redirect('/profile')
    else:
        print('THIS IS NOT WOOORRKIINNGGG')
class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    followall = models.ManyToManyField(User, related_name='followfriend')
    bio = models.TextField(max_length=100, default='', blank=True)
    cover = models.FileField(blank=True)

@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 EditGeneralProfileForm(forms.ModelForm):

    class Meta:
        model = Profile
        fields = ('bio', 'cover')
表单实际出现在GET请求中的模板

 <form class="form-self general-form" method="post" action="{% url 'profili:edit_general_profile' %}" enctype="multipart/form-data">

          {% csrf_token %}
          {% for item in generalform %}

          <div class="full-part">
            <div class="label-par">
              <span class="label-part">{{ item.label }}:</span>
            </div>
            <div class="original-part">{{ item }}</div>
          </div>

          {% endfor %}

          <div class="full-part-btn">
            <button type="submit" class="fpartbtn">Save</button>
          </div>

        </form>

{%csrf_令牌%}
{generalform%中的项的%s}
{{item.label}}:
{{item}}
{%endfor%}
拯救

这是配置文件模型的一个表单,因此您应该将其作为实例传递

generalform = EditGeneralProfileForm(request.POST, request.FILES, instance=request.user.profile)
print('这不是他妈的WooorkiInnggg')
Haha,我去过那里。那真的是打印出来的吗?我打赌Daniel Roseman是对的不“这他妈的没用”不是打印出来的。。这让我相信事情正在发生。。我有点生气:D