如何在同一模板中创建,更新和删除表单?

时间:2020-05-10 16:31:45

标签: python django django-models django-views crud

我打算在同一模板上进行更新,创建和删除,如下所示。

我目前在模特身上有以下内容

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”的单独按钮,我需要将其定向到与更新客户相同的模板,但要创建客户。

这可能发生吗?

1 个答案:

答案 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 ...

相关问题