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