zoukankan      html  css  js  c++  java
  • django model.form

    一.

    model的知识点

    1              class UserInfo(AbstractUser):
    2                     tel=models.CharField(max_length=32)
    3                     gender=models.IntegerField(choices=((1,""),(2,"")),default=1)
    4              
    5              yuan=UserInfo.objects.get(pk=1)
    6              yuan.get_gender_display()
    modelform

    modefform使用

    model.py:

     1             class Book(models.Model):
     2                 nid=models.AutoField(primary_key=True)
     3                 title=models.CharField(max_length=32)
     4                 price=models.DecimalField(max_digits=8,decimal_places=2) # 999999.99
     5                 pub_date=models.DateTimeField()  # "2012-12-12"
     6 
     7                 # comment_count=models.IntegerField(default=100)
     8                 # poll_count=models.IntegerField(default=100)
     9 
    10                 publish=models.ForeignKey(to="Publish",on_delete=models.CASCADE)  # 级联删除
    11                 authors=models.ManyToManyField(to="Author")
    12                 def __str__(self):
    13                     return self.title
    复杂版

    form.py:

     1         form.py:
     2                # 构建modelform
     3                class BookModelForm(forms.ModelForm):
     4                     class Meta:
     5                         model=Book
     6                         fields="__all__"
     7                         
     8                '''
     9                BookModelForm等同于:
    10                     class BookForm(forms.Form):
    11                             title=forms.CharField(max_length=32)
    12                             price=forms.IntegerField()
    13                             pub_date=forms.DateField(widget=widgets.TextInput(attrs={"type":"date"}))
    14                             #publish=forms.ChoiceField(choices=[(1,"AAA"),(2,"BBB")])写死的
    15                             publish=forms.ModelChoiceField(queryset=Publish.objects.all())
    16                             authors=forms.ModelMultipleChoiceField(queryset=Author.objects.all())
    17       
    18                '''
    完美版

    逻辑:

    添加书籍

    def add(request):

    if GET:

    form=BookModelForm()

    return render(reqeust,{"form":form})
    渲染页面

     1           '''
     2                           渲染页面
     3                               <form action="" method="post" novalidate>
     4                                     {% csrf_token %}
     5                                       {% for field in form %}
     6                                             <div class="form-group">
     7                                                  <label for="title">{{ field.label }}</label>
     8                                                  {{ field }}
     9                                                  <span>{{ field.errors.0 }}</span>
    10                                             </div>
    11                                      {% endfor %}
    12                                     <input type="submit" value="提交" class="btn btn-default pull-right">
    13                               </form>
    14                           '''
    add.html

    esle : POST 请求

    form=BookModelForm(request.POST)

    if form.is_valid():

    form.save()

    return redirect("")

    else:

    return render(reqeust,{"form":form})
    编辑书籍: 

    def edit(request,id):
    edit_obj=Book.objects.get(pk=id)
    if GET请求:
    form=BookModelForm(instance=edit_obj)
    return render(reqeust,{"form":form})
    '''
    渲染页面同添加页面

    '''
    else POST请求:
    form=BookModelForm(request.POST,instance=edit_obj)#加入instance等同于
    if form.is_valid():
    form.save() # edit_obj.update(clean_data)
    return redirect("/")
    else:
    return render(reqeust,{"form":form})
  • 相关阅读:
    负载均衡
    二叉树反转
    hashMap 和红黑树
    linux c++ 服务器编程,收藏一个测试例子
    某某音乐盒面试
    Linux中的文件i节点
    linux 文件格式压缩
    类string的构造函数、拷贝构造函数和析构函数
    计算二叉树的深度
    string转换为decimal
  • 原文地址:https://www.cnblogs.com/zhangqing979797/p/9919020.html
Copyright © 2011-2022 走看看