Django第四課——ModelForm用法
阿新 • • 發佈:2017-12-22
class () quest .html .get ins reat 所有 create
內容概要:
1.新增數據庫表中數據
2.更新數據庫表中數據
1.新增數據庫表中數據
views文件夾==》mf.py中
‘‘‘ ModelForm的功能介紹: 1.獲取所有或指定字段 2.新增數據庫表中數據 3.更新數據庫表中數據 ‘‘‘ from django.shortcuts import render from django import forms from app01 import models class UModelForm(forms.ModelForm): class Meta:#定義元類,同時能將關聯的數據全部拿到(ForeignKey) model = models.User #和models.py中的User表關聯,註意寫法:model,沒有s!!! fields = ‘__all__‘ #取全部字段 #新增數據方法,並且同步到數據庫 def index(request): if request.method ==‘GET‘: obj =UModelForm() return render(request,‘mf.html‘,{‘obj‘:obj}) elif request.method ==‘POST‘: obj = UModelForm(request.POST) if obj.is_valid(): print(obj.cleaned_data) # models.User.objects.create(**obj.cleaned_data)#新增數據方法,或者用obj.save() obj.save() return render(request, ‘mf.html‘, {‘obj‘:obj})
mf.html中
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <form method="post" action="/mf/"> {% csrf_token %} {{ obj.as_p }} <input type="submit" value="提交"> </form> </body> </html>
models.py中
from django.db import models class UserType(models.Model): name = models.CharField(max_length=32) def __str__(self): return self.name class User(models.Model): name = models.CharField(max_length=32) email = models.EmailField(max_length=32) u_type = models.ForeignKey(‘UserType‘) #一對多 m = models.ManyToManyField(‘M2M‘) #多對多 class M2M(models.Model): name = models.CharField(max_length=32) def __str__(self): return self.name
urls.py中
from django.conf.urls import url from django.contrib import admin from app01.views import fm from app01.views import mf urlpatterns = [ url(r‘^admin/‘, admin.site.urls), url(r‘^fm/‘, fm.index), url(r‘^aa/‘, fm.aa), url(r‘^mf/‘, mf.index), ]
2.更新數據庫表中數據
views文件夾==》mf.py中
‘‘‘ ModelForm的功能介紹: 1.獲取所有或指定字段 2.新增數據庫表中數據 3.更新數據庫表中數據 ‘‘‘ from django.shortcuts import render from django import forms from app01 import models class UModelForm(forms.ModelForm): class Meta:#定義元類,同時能將關聯的數據全部拿到(ForeignKey) model = models.User #和models.py中的User表關聯,註意寫法:model,沒有s!!! fields = ‘__all__‘ #取全部字段 #更新數據庫中數據 def edit_index(request,nid): if request.method ==‘GET‘: model_obj = models.User.objects.get(id=nid) obj =UModelForm(instance=model_obj) #帶上現在的值 return render(request,‘mf1.html‘,{‘obj‘:obj,‘nid‘:nid}) elif request.method == ‘POST‘: model_obj = models.User.objects.get(id=nid) obj = UModelForm(request.POST,instance=model_obj) #這個地方也要加上instance if obj.is_valid(): obj.save() return render(request, ‘mf1.html‘, {‘obj‘: obj})
mf1.html中
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <form method="post" action="/edit-mf-{{ nid }}/"> {% csrf_token %} {{ obj.as_p }} <input type="submit" value="提交"> </form> </body> </html>
models.py中
from django.db import models class UserType(models.Model): name = models.CharField(max_length=32) def __str__(self): return self.name class User(models.Model): name = models.CharField(max_length=32) email = models.EmailField(max_length=32) u_type = models.ForeignKey(‘UserType‘) #一對多 m = models.ManyToManyField(‘M2M‘) #多對多 class M2M(models.Model): name = models.CharField(max_length=32) def __str__(self): return self.name
urls.py中
from django.conf.urls import url from django.contrib import admin from app01.views import fm from app01.views import mf urlpatterns = [ url(r‘^admin/‘, admin.site.urls), url(r‘^fm/‘, fm.index), url(r‘^aa/‘, fm.aa), url(r‘^mf/‘, mf.index), url(r‘^edit-mf-(\d+)‘, mf.edit_index), ]
Django第四課——ModelForm用法