Python 更新数据库中的现有模型
大家好,我有一个问题,我想更新数据库中的一个特定模型,就像我希望用户更新一样 更改他们的电话号码和图片…等具体的一个不是所有的模型,我无法在视图中这样做。py,下面是我的代码,可以帮助请 models.py:Python 更新数据库中的现有模型,python,django,Python,Django,大家好,我有一个问题,我想更新数据库中的一个特定模型,就像我希望用户更新一样 更改他们的电话号码和图片…等具体的一个不是所有的模型,我无法在视图中这样做。py,下面是我的代码,可以帮助请 models.py: # Create your models here. PHONE_REGEX = '^[0-9]*$' class Profile(AbstractUser): phone_number = models.CharField(
# Create your models here.
PHONE_REGEX = '^[0-9]*$'
class Profile(AbstractUser):
phone_number = models.CharField(
max_length=14,
help_text='Optional',
blank=True,
validators=[
RegexValidator(
regex=PHONE_REGEX,
message=
'phone number must be only digit and from 10 to 14 digits only',
code='invalid-phone number'),
MinLengthValidator(10)
])
picture = models.ImageField(upload_to='upload/', blank=True, default=False)
email = models.EmailField(max_length=254,
unique=True,
help_text='Required, pls enter a valid Email')
forms.py:
class Change_pic_form(forms.ModelForm):
class Meta:
model = Profile
fields = ('picture', )
Views.py
这里是它的一个片段
@login_required
def Change_picture(request):
instance = Profile.objects.get(pk=request.user.pk)
form = Change_pic_form(request.POST or None, instance=instance)
if form.is_valid():
instance = form.save(commit=False)
instance.save()
return redirect('change_pic')
else:
form = Change_pic_form(instance=instance)
context = {
'picture': instance.picture,
'form': form,
'instance': instance,
}
return render(request, 'account/change_picture.html', context)
可能我没有说清楚对不起,我的网站工作正常我有登录,注册…等等,我的意思是我有一个用户配置文件页面,用户可以在其中查看他的信息,我希望用户如果想更新他的信息,如电话号码,图片…等你必须先运行
makemigrations
命令
python manage.py makemigrations <app_name>
您有了模型和表单,现在需要在模板中呈现表单。
阅读文档,了解如何在模板中呈现表单以及如何在视图中处理表单提交。感谢任何人的帮助,我找到了在视图中编写图像或文件的解决方案 在模板enctype=“multipart/form data”内的request.file和表单中 现在工作很好 Views.py
def Change_picture(request, pk):
prof = get_object_or_404(Profile, pk=pk)
if request.method == "POST":
form = Change_pic_form(request.POST,
request.FILES,
instance=request.user)
if form.is_valid():
form.save()
messages.success(request, f'Your Picture updated successfully')
return redirect('profile')
else:
form = Change_pic_form(instance=request.user)
return render(request, 'account/change_picture.html', {
'prof': prof,
'form': form
})
模板
<form enctype="multipart/form-data" method="POST">
{% csrf_token %}
<br />
{{ form.as_p }}
<button type="submit">Change!</button>
</form>
{%csrf_令牌%}
{{form.as_p}}
改变
我的网站运行良好,你能检查我在这个问题上编辑的内容吗,谢谢帮助ok让我检查@yazan\u bader。你能分享视图吗?有问题的py代码吗?好的,我现在就分享,你只想更新那些将从Change\u pic\u表单提交的特定字段,对吗?首先请更改变量名实例
,因为在两个不同的地方,您给出了相同的变量名实例
是的,我想更新特定的字段,在这个函数中是图片字段,对于变量名,任何问题都不会更改它。
<form enctype="multipart/form-data" method="POST">
{% csrf_token %}
<br />
{{ form.as_p }}
<button type="submit">Change!</button>
</form>