第77篇 formset的使用示例

Posted cavalier-chen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第77篇 formset的使用示例相关的知识,希望对你有一定的参考价值。

1. views

from django.shortcuts import render
from django.forms import modelformset_factory
from app01.forms import Publisher
from app01.forms import PunlisherForm
# Create your views here.


def publisher(request):
    data = Publisher.objects.all()
    Formset = modelformset_factory(Publisher,PunlisherForm,extra=0)
    formset_obj = Formset(queryset=data)
    if request.method == ‘POST‘:
        # form_obj = Form(request.POST,instance=edit_obj)
        formset_obj = Formset(request.POST,queryset=data)
        if formset_obj.is_valid():
            formset_obj.save()
    return render(request,‘publisher.html‘,{‘formset_obj‘:formset_obj})

  2. html

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>出版社列表</title>
</head>
<body>
<h1>出版社列表</h1>
<form action="" method="post">
{% csrf_token %}  防止跨站请求伪造
{{ formset_obj.management_form }}  告诉后端总共有哪些form 哪些发生了变化
    <table border="1">
        <thead>
        <tr>
            <th>#</th>
            <th>名称</th>
            <th>地址</th>
        </tr>
        </thead>
        <tbody>
        {% for form_obj in formset_obj %}
            <tr>
                <td>{{ forloop.counter }}</td>
                {{ form_obj.id }}
                <td> {{ form_obj.name }}</td>
                <td> {{ form_obj.addr }}</td>
            </tr>
        {% endfor %}
        </tbody>
    </table>
    <input type="submit" name="" id="">
</form>
</body>
</html>

  3. models

from django.db import models
# 出版社列表
class Publisher(models.Model):
    name = models.CharField(max_length=32)
    addr = models.CharField(max_length=128)

  4. forms

from django import forms
from app01.models import Publisher

class PunlisherForm(forms.ModelForm):

    class Meta:
        model = Publisher
        fields = ‘__all__‘

  

以上是关于第77篇 formset的使用示例的主要内容,如果未能解决你的问题,请参考以下文章

第77篇

Python入门教程第77篇 格式化字符串F-strings

Python代码阅读(第26篇):将列表映射成字典

Python代码阅读(第41篇):矩阵转置

第77篇 ERC20-USDT智能合约

Python代码阅读(第40篇):通过两个列表生成字典