【问题标题】:How to create, update and delete forms in the same template?如何在同一个模板中创建、更新和删除表单?
【发布时间】:2020-05-10 16:31:45
【问题描述】:

我打算在同一个模板上更新、创建和删除,如下图。

目前我的模型上有以下内容

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

这可能发生吗?

【问题讨论】:

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


    【解决方案1】:

    您可以在模板中的表单中为 EditNew 按钮使用不同的名称,如下所示:

    <form action="/" method="post">
        <input type="submit" name="new_customer" value="New" />
        <input type="submit" name="edit_customer" value="Edit" />
    </form>
    

    并像这样在views.py 中的CustomerProfile 中捕获它们:

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

    【讨论】:

    • 是的,我在回答中在同一个模板中使用了两个按钮表单
    • 我试了一下,好像不行,是不是单独创建一个函数比较好?
    猜你喜欢
    • 1970-01-01
    • 2021-08-20
    • 1970-01-01
    • 2014-03-15
    • 1970-01-01
    • 1970-01-01
    • 2016-10-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多