Python 更新数据库中的现有模型

Python 更新数据库中的现有模型,python,django,Python,Django,大家好,我有一个问题,我想更新数据库中的一个特定模型,就像我希望用户更新一样 更改他们的电话号码和图片…等具体的一个不是所有的模型,我无法在视图中这样做。py,下面是我的代码,可以帮助请 models.py: # Create your models here. PHONE_REGEX = '^[0-9]*$' class Profile(AbstractUser): phone_number = models.CharField(

大家好,我有一个问题,我想更新数据库中的一个特定模型,就像我希望用户更新一样 更改他们的电话号码和图片…等具体的一个不是所有的模型,我无法在视图中这样做。py,下面是我的代码,可以帮助请

models.py:

    # 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>