我想制作更改模型信息用户的更新页面。 我的节目很棒。
#urls.py
url(r'^user_edit/(?P<pk>\d+)$', views.UserEdit.as_view(), name='user_edit'),
#models.py
from datetime import datetime
from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User
class User(User):
name = models.CharField(max_length=200, default='Null')
post = models.CharField(max_length=9, default='Null')
bank = models.CharField(max_length=200, default='Null')
mail = models.CharField(max_length=200, default='Null')
address1 = models.CharField(max_length=200, default='Null')
address2 = models.CharField(max_length=200, default='Null')
address3 = models.CharField(max_length=200, default='Null')
tel = models.CharField(max_length=15, default='Null')
fax = models.CharField(max_length=15, default='Null')
#views.py
from .forms import InvoiceForm, UserForm, CustomerForm ,UserSignupForm
class UserEdit(generic.UpdateView):
model = User
form_class = UserForm
template_name = 'invo/user.html'
success_url = "invo/user_info"
# get current user object
def get_object(self, queryset=None):
return self.request.user
#forms.py
from django import forms
from .models import Invoice, User, Customer
class UserForm(forms.ModelForm):
class Meta:
model = User
fields = ["username", "email",'password','first_name', 'last_name', ]
#user.html [Template]
{% extends 'invo/base.html' %}
{% block content %}
<div class="gtco-section gtco-testimonial gtco-gray">
<div class="gtco-container">
<div class="row">
<div class="col-md-8 col-md-offset-2 gtco-heading text-center">
<h2>Update</h2>
</div>
</div>
<div class="row">
<h3>User Profile</h3>
<div class="row">
{% if messages %}
<ul class="messages">
{% for message in messages %}
<li
{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
<form method="post">
{% csrf_token %}
<table>
{{ form.as_p }}
</table>
<input type="submit" value="change">
</form>
</div>
</div>
</div>
</div>
<!-- END .gtco-services -->
{% endblock%}
我的页面是这样的。它没有表格 这是html源代码。有Form.But它是隐藏的!!有什么问题?没有获得表格信息......?
#source
<h3>User Profile</h3>
<div class="row">
<form method="post">
<input type='hidden' name='csrfmiddlewaretoken' value='pLoy7OtBOunF70avjFRTt1wlaIwTIArfe8wkNmbVZOslAu6G4hiFoC8oRWVhcbID' />
<table>
</table>
<input type="submit" value="change">
</form>
</div>
我以同样的方式制作了另一个更新表单。但是用户模型无法显示表单。 如果你知道这个问题。请帮助我。
答案 0 :(得分:0)
使用基于类的视图,您可以只指定要使用的模型上的字段,并且只要视图可以确定视图所针对的模型,就会生成ModelForm。见https://docs.djangoproject.com/en/1.11/topics/class-based-views/generic-editing/#model-forms
然后你的观点看起来像:
class UserEdit(generic.UpdateView):
model = User
fields = ('username', )
答案 1 :(得分:0)
我认为它可能是您的模型字段,您继承了User模型并尝试更改其字段,继承AbstractUser类会更安全。这可能是原因。如果您不知道如何使用AbstractUser类,可以查看本教程。 https://simpleisbetterthancomplex.com/tutorial/2016/07/22/how-to-extend-django-user-model.html,我真的希望这会有所帮助。
答案 2 :(得分:0)
您已将form_class定义为用户编辑表单,但您正在使用{{form.as_p}}作为模板中的表单首先更正