我打算在同一模板上进行更新,创建和删除,如下所示。
我目前在模特身上有以下内容
class Customer(models.Model):
TITLE = (
('Mr', 'Mr'),
('Mrs', 'Mrs'),
('Miss', 'Miss'),
('Ms', 'Ms'),
('Dr', 'Dr'),
('Sir', 'Sir'),
('Madam', 'Madam'),
)
STATUS = (
('Active', 'Active'),
('On hold', 'On hold'),
)
GENDER = (
('Male', 'Male'),
('Female', 'Female'),
)
ROLE = (
('Customer', 'Customer'),
('Admin', 'Admin'),
)
title = models.CharField(max_length=200, null=True, choices=TITLE)
first_name = models.CharField(max_length=200, null=True)
middle_name = models.CharField(max_length=200, blank=True,default='')
last_name = models.CharField(max_length=200, null=True)
phone = models.CharField(max_length=200, null=True)
country = CountryField()
birth_year = models.CharField(max_length=4, null=True)
gender = models.CharField(max_length=200, null=True, choices=GENDER)
email = models.CharField(max_length=200, null=True)
password = models.CharField(max_length=200, null=True)
status = models.CharField(max_length=200, null=True,choices=STATUS)
date_created = models.DateTimeField(auto_now=True, null=True)
profile_pic = models.ImageField(null=True, blank=True, default='images/default.png')
role = models.CharField(max_length=200, null=True, choices=ROLE)
我的表格如下
class CustomerProfileForm(forms.ModelForm):
class Meta:
model = Customer
fields = [ 'title','first_name','middle_name','last_name','phone','country','birth_year','gender']
当前,我的视图显示为更新每个客户,如下所示。
@login_required(login_url='login')
def CustomerProfile(request, pk):
customer = Customer.objects.get(id=pk)
formie = CustomerProfileForm(instance=customer)
if request.method == 'POST':
formie = CustomerProfileForm(request.POST, instance=customer)
if formie.is_valid():
formie.save()
return redirect('/')
context = {'formie':formie}
return render(request, 'accounts/customer_profile.html', context)
在另一个模板中,我有一个客户列表,每个客户都有一个针对每个客户更新的编辑按钮,如上所示。
但是有一个名为“ NEW”的单独按钮,我需要将其定向到与更新客户相同的模板,但要创建客户。
这可能发生吗?
答案 0 :(得分:0)
您可以在模板中的表单中的编辑和新建按钮中使用不同的名称,如下所示:
<form action="/" method="post">
<input type="submit" name="new_customer" value="New" />
<input type="submit" name="edit_customer" value="Edit" />
</form>
像这样将它们捕获在CustomerProfile
中的views.py
中:
if request.method == 'POST':
if 'edit_customer' in request.POST:
formie = CustomerProfileForm(request.POST, instance=customer)
if formie.is_valid():
formie.save()
return redirect('/')
elif 'new_customer' in request.POST:
# create new customer here
# your other codes ...