在 Django 中为配置文件创建编辑页面
creating edit page for profile in django
我是初学者。我的项目是关于公司和客户的。我已经为他们创建了个人资料页面。现在我想创建一个编辑页面,以便公司可以编辑他们的个人资料。
我的模型是:
class Company_Profile(models.Model):
user = models.OneToOneField(User)
name = models.CharField(_('Company Name'), max_length= 30)
logo = models.FileField(_('Company Logo'), upload_to=get_upload_file_name, null=True, blank=True)
address = models.TextField(_('Contact Address'), max_length=50)
phone_no = models.IntegerField(_('Contact No'), max_length=12)
class Customer_Profile(models.Model):
user = models.OneToOneField(User)
first_name = models.CharField(_('First Name'), max_length= 30)
middle_name = models.CharField(_('Middle Name'), max_length= 30,null = True,blank=True)
last_name = models.CharField(_('Last Name'), max_length= 30)
photo = models.ImageField(_('Photo'), upload_to=get_upload_file_name, null=True, blank=True)
address = models.TextField(_('Contact Address'), max_length=50)
phone_no = models.IntegerField(_('Contact No'), max_length=12)
我的 views.py 是:
def register(request):
if request.method == 'POST':
form = RegistrationForm(request.POST)
if form.is_valid():
user = User.objects.create_user(
username=form.cleaned_data['username'],
password=form.cleaned_data['password1'],
email=form.cleaned_data['email']
)
return HttpResponseRedirect('/login/')
else:
form = RegistrationForm()
catagories = Company_Profile.objects.all()
customers = Customer_Profile.objects.all()
return render_to_response('index1.html',
{'form': form, 'catagories': catagories, 'customers' : customers},RequestContext(request))
def edit_company(request, offset):
if request.method == 'POST':
company_edit = update_company_prof(request.POST, instance = request.user.company_profile)
if company_edit.is_valid():
company_edit.save()
return HttpResponseRedirect('company/'+str(company_edit.id))
else:
company_edit = update_company_prof(instance = request.user.company_profile)
return render_to_response('edit_comp_prof.html', {'company_edit': company_edit}, context_instance=RequestContext(request))
我的 html 编辑页面是:
<form action="" method="post" enctype="multipart/form-data">{% csrf_token %}
{{ company_edit.as_p }}
<input type="submit" value="Update" />
<input type="reset" class="btn" value="cancel">
</form>
我的 update_comp_prof 表格是:
class update_company_prof(UpdateView):
class Meta:
model = Company_Profile
fields = ('name','logo','address','phone_no')
我只收到更新按钮。帮帮我...
首先,由于您的配置文件模型中有 ForeignKey
到 User
模型,因此每个 User
可以有多个配置文件。如果您希望它是单个的,请将它们更改为:
user = models.OneToOneField(User)
然后您可以使用模型名称访问您的个人资料,例如:
instance = request.user.company_profile
或
instance = request.user.user_profile
您的 update_company_prof 必须扩展 forms.ModelForm,而不是 UpdateView。还可以考虑将 update_company_prof 的名称更改为类似 CompanyProfileForm 的名称,因为它目前非常具有误导性。
我是初学者。我的项目是关于公司和客户的。我已经为他们创建了个人资料页面。现在我想创建一个编辑页面,以便公司可以编辑他们的个人资料。 我的模型是:
class Company_Profile(models.Model):
user = models.OneToOneField(User)
name = models.CharField(_('Company Name'), max_length= 30)
logo = models.FileField(_('Company Logo'), upload_to=get_upload_file_name, null=True, blank=True)
address = models.TextField(_('Contact Address'), max_length=50)
phone_no = models.IntegerField(_('Contact No'), max_length=12)
class Customer_Profile(models.Model):
user = models.OneToOneField(User)
first_name = models.CharField(_('First Name'), max_length= 30)
middle_name = models.CharField(_('Middle Name'), max_length= 30,null = True,blank=True)
last_name = models.CharField(_('Last Name'), max_length= 30)
photo = models.ImageField(_('Photo'), upload_to=get_upload_file_name, null=True, blank=True)
address = models.TextField(_('Contact Address'), max_length=50)
phone_no = models.IntegerField(_('Contact No'), max_length=12)
我的 views.py 是:
def register(request):
if request.method == 'POST':
form = RegistrationForm(request.POST)
if form.is_valid():
user = User.objects.create_user(
username=form.cleaned_data['username'],
password=form.cleaned_data['password1'],
email=form.cleaned_data['email']
)
return HttpResponseRedirect('/login/')
else:
form = RegistrationForm()
catagories = Company_Profile.objects.all()
customers = Customer_Profile.objects.all()
return render_to_response('index1.html',
{'form': form, 'catagories': catagories, 'customers' : customers},RequestContext(request))
def edit_company(request, offset):
if request.method == 'POST':
company_edit = update_company_prof(request.POST, instance = request.user.company_profile)
if company_edit.is_valid():
company_edit.save()
return HttpResponseRedirect('company/'+str(company_edit.id))
else:
company_edit = update_company_prof(instance = request.user.company_profile)
return render_to_response('edit_comp_prof.html', {'company_edit': company_edit}, context_instance=RequestContext(request))
我的 html 编辑页面是:
<form action="" method="post" enctype="multipart/form-data">{% csrf_token %}
{{ company_edit.as_p }}
<input type="submit" value="Update" />
<input type="reset" class="btn" value="cancel">
</form>
我的 update_comp_prof 表格是:
class update_company_prof(UpdateView):
class Meta:
model = Company_Profile
fields = ('name','logo','address','phone_no')
我只收到更新按钮。帮帮我...
首先,由于您的配置文件模型中有 ForeignKey
到 User
模型,因此每个 User
可以有多个配置文件。如果您希望它是单个的,请将它们更改为:
user = models.OneToOneField(User)
然后您可以使用模型名称访问您的个人资料,例如:
instance = request.user.company_profile
或
instance = request.user.user_profile
您的 update_company_prof 必须扩展 forms.ModelForm,而不是 UpdateView。还可以考虑将 update_company_prof 的名称更改为类似 CompanyProfileForm 的名称,因为它目前非常具有误导性。