Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.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_Django Models_Django Forms_Django Views - Fatal编程技术网

Python (Django)无法更新自定义配置文件

Python (Django)无法更新自定义配置文件,python,django,django-models,django-forms,django-views,Python,Django,Django Models,Django Forms,Django Views,所以我尝试在扩展更新中更新用户的信息,但是在我添加其他信息之前它起作用了,但是现在它不起作用了,我尝试过返回,但仍然没有任何结果 因此,它确实发送了帖子,但无法验证它 Html forms.py 您没有保存ExtendeDeduser对象 user.extendeduser.save() 1-第一次运行。/manage.py shell 2-在shell中运行所有更新用户命令,以验证错误是否存在。 3-如果没有错误,请发布./manage.py runserver的错误日志,这样我就能够更准确

所以我尝试在扩展更新中更新用户的信息,但是在我添加其他信息之前它起作用了,但是现在它不起作用了,我尝试过返回,但仍然没有任何结果

因此,它确实发送了帖子,但无法验证它

Html forms.py
您没有保存ExtendeDeduser对象

user.extendeduser.save()

1-第一次运行。/manage.py shell 2-在shell中运行所有更新用户命令,以验证错误是否存在。
3-如果没有错误,请发布./manage.py runserver的错误日志,这样我就能够更准确地回答您的问题。

所以我遗漏了一件事,那就是我在模型中使用了很多外键,没有看到有一个名为modelcooicefield和modelmultipleechoicefield的字段,它不起作用。所以我基本上改变了我的形式,然后它就成功了

Form.py
“@wm3ndez是的,这是我这边的一个小姐addin,但是我写的东西,一旦按下Submit,它就不会作为一个post请求,也不需要我在models应用程序中添加的东西,所以一旦用户模型更新,extendeduser模型就会自动保存到,但我写的东西,一旦按下Submits,它就不会作为post请求,所以它会结束它,但它无法验证表单。如果表单无效,您应该显示错误,而不是重定向到另一个页面并隐藏它们。即使我这样做了,删除所有返回,它仍然不会给出结果“什么意思?现在代码是什么样子的?您看到了什么?为什么你不能使用文档化的模式来处理表单的视图呢?它也会出现在帖子中,但是帖子不能被验证。我刚刚找到了为什么?
@login_required
def userprofileupdate(request, user_pk):
    if request.method == 'POST':
        form = UpdateProfileForm(request.POST, instance=request.user)
        if form.is_valid():
            user = form.save()
            user.refresh_from_db()  # load the profile instance created by the signal
            user.extendeduser.nickname = form.cleaned_data.get('username')
            user.extendeduser.postal_code = form.cleaned_data.get('postal_code')
            user.extendeduser.phone_number = form.cleaned_data.get('phone_number')
            user.extendeduser.emergency_number = form.cleaned_data.get('emergency_number')
            user.extendeduser.birthdate = form.cleaned_data.get('birthdate')
            user.extendeduser.languages = form.cleaned_data.get('languages')
            user.extendeduser.drivers_licence = form.cleaned_data.get('drivers_licence')
            user.extendeduser.tshirt = form.cleaned_data.get('tshirt')
            user.extendeduser.special_considerations = form.cleaned_data.get('special_considerations')
            user.save()
            messages.success(request, "Your profile has been updated!")
            return redirect('usersettings', user_pk=request.user.pk)

    messages.error(request, 'Error: please update your settings if you want to update them')
    return redirect('usersettings', user_pk=request.user.pk)
class UpdateProfileForm(forms.ModelForm):
    postal_code = forms.CharField(max_length=10, required=True)
    phone_number = forms.CharField(max_length=16, required=True)
    emergency_number = forms.CharField(max_length=16, required=True)
    birthdate = forms.DateField(required=False)
    languages = forms.MultipleChoiceField(required=False)
    drivers_licence = forms.MultipleChoiceField(required=False)
    tshirt = forms.ChoiceField(required=False)
    special_considerations = forms.CharField(required=False)
    class Meta:
        model = User
        fields = ('username', 'first_name', 'last_name', 'email', 'birthdate', 'phone_number', 'emergency_number', 'postal_code', 'languages', 'drivers_licence', 'tshirt', 'special_considerations',)
user.extendeduser.save()
from django.forms import ModelChoiceField, ModelMultipleChoiceField    
class TshirtChoiceField(ModelChoiceField):
    def label_from_instance(self, obj):
        return obj.description

class DriversLicenceCategoriesMultipleChoiceField(ModelMultipleChoiceField):
    def label_from_instance(self, obj):
        return obj.category

class LanguageMultipleChoiceField(ModelMultipleChoiceField):
    def label_from_instance(self, obj):
        return obj.name

class UpdateProfileForm(forms.ModelForm):
    birthdate = forms.DateField(input_formats=['%d-%m-%Y'],required=False)
    phone_number = forms.CharField(max_length=16, required=True)
    emergency_number = forms.CharField(max_length=16, required=False)
    postal_code = forms.CharField(max_length=10, required=True)
    languages = LanguageMultipleChoiceField(queryset=Language.objects.all(),required=False)
    drivers_licence = DriversLicenceCategoriesMultipleChoiceField(queryset=DriversLicenceCategories.objects.all(),required=False)
    tshirt = TshirtChoiceField(queryset=TShirt.objects.all(),required=False)
    special_considerations = forms.CharField(required=False)
    class Meta:
        model = User
        fields = ('username', 'first_name', 'last_name', 'email', 'birthdate', 'phone_number', 'emergency_number', 'postal_code', 'languages', 'drivers_licence', 'tshirt', 'special_considerations',)