添加/修改表单

添加按钮

<div class="pull-left"><a href="{% url 'price_policy_add' %}" class="btn-success btn" style="margin-bottom: 10px"><i
                class="fa fa-plus-square-o"></i> 添加</a></div>

modelForm

from .bootstrapForm import BootstrapForm
from django import forms
from django.core.exceptions import ValidationError


class PricePolicyForm(BootstrapForm, forms.ModelForm):
    class Meta:
        model = PricePolicy
        fields = '__all__'

    def clean_count(self):
        count = self.cleaned_data.get('count')
        if count < 0:
            raise ValidationError('必须大于0')
        return count

    def clean_price(self):
        price = self.cleaned_data.get('price')
        if price < 0:
            raise ValidationError('必须大于0')
        return price

前端表单

<form method="post" novalidate>
        {% csrf_token %}
        {% for foo in form %}
            <div class="form-group">
            <label for="{{ foo.id_for_label }}">{{ foo.label }} <span style="color: #1b6d85">{{ foo.help_text }}</span>
            </label>
            {{ foo }}
            <span class="error_msg" style="color: red">{{ foo.errors.0 }}</span>
        {% endfor %}
        </div>
        <button type="submit" class="btn btn-default">保存</button>
    </form>

后端添加逻辑

def user_add(request):
    if request.method == 'GET':
        form = UserForm()
        return render(request, 'form2.html', {'form': form})

    if request.method == 'POST':
        form = UserForm(request.POST)
        if not form.is_valid():
            return render(request, 'form2.html', {'form': form})
        form.instance.isAdmin = 0
        form.instance.creator = request.user_info.uid
        form.save()
        return redirect('user_list')

前端编辑按钮

{% for one in queryset %}
            <tr user-id="{{ one.id }}">
                <td>{{ one.id }}</td>
                <td>{{ one.count }}</td>
                <td>{{ one.price }}</td>
                <td>
                    <a href="{% url 'price_policy_edit' pk=one.id %}" class="btn btn-warning btn-sm">编辑</a>
                </td>
            </tr>
        {% endfor %}

后端编辑逻辑

def price_policy_edit(request, pk):
    price_policy = models.PricePolicy.objects.filter(id=pk).first()
    if request.method == 'GET':
        form = PricePolicyForm(instance=price_policy)
        return render(request, 'form1.html', {'form': form})
    if request.method == 'POST':
        form = PricePolicyForm(data=request.POST, instance=price_policy)
        if not form.is_valid():
            return render(request, 'form1.html', {'form': form})
        form.save()
        return redirect('price_policy_list')
posted @ 2022-09-13 20:59  Sherwin_szw  阅读(24)  评论(0编辑  收藏  举报