日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

关于form组件的补充-------formChoice

發布時間:2024/4/17 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于form组件的补充-------formChoice 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

form組件的Choice字段

  還是基于出版社和書的模型來詳解

  models.py(模型)

from django.db import models# Create your models here. class Book(models.Model):title = models.CharField(max_length=32)pub_date = models.DateField()price = models.DecimalField(max_digits=5, decimal_places=2) state=models.IntegerField(choices=((1,'已出版'),(2,'未出版')),default=1) #在數據庫存儲是以數字存儲的,怎么取值?book是類的對象--book.get_state_displaypublish = models.ForeignKey(to="Publish", to_field="id", on_delete=models.CASCADE, null=True)authors = models.ManyToManyField("Author", db_table="book2authors") # 創建關系表def __str__(self):return self.titleclass Publish(models.Model):name = models.CharField(max_length=32)city = models.CharField(max_length=32)email = models.CharField(max_length=32)def __str__(self):return self.nameclass Author(models.Model):name = models.CharField(max_length=32)age = models.IntegerField() gender=models.IntegerField(choices=((1,'男'),(2,'女'),),default=1)#在數據庫存儲是以數字存儲的,怎么取值?book是類的對象--book.get_gender_display ?

  urls.py(路徑分發)

urlpatterns = [path('admin/', admin.site.urls),path('books/', views.books, name='books'),path('addbooks/', views.addbooks, name='addbooks'),re_path('delbooks/(\d+)', views.delbooks),re_path('editbooks/(\d+)', views.editbooks) ]

?

  view.py(視圖函數)

#為Book這個模型創建forms,為了渲染數據和校驗使用,所以這個類的字段必須和模型類有個邏輯上的關系 class BookForm(forms.Form):
title=forms.CharField(max_length=32)
price= forms.DecimalField(max_digits=5,decimal_places=2)
pub_date = forms.DateField()
state=forms.ChoiceField(choices=((1,'已出版'),(2,'未出版'))) #選擇項,用的最多
publish=forms.ModelChoiceField(models.Publish.objects.all()) #一對多
authors=forms.ModelMultipleChoiceField(models.Author.objects.all()) #多對多   #對于publish和author這兩個一對多和多對多的字段也不用考慮那么多直接用formChoice字段,然后把所有的對象取出來賦值到里面就行


#查看書籍
def
books(request):booklist = models.Book.objects.all()return render(request, 'books.html', {'booklist': booklist})


#添加書籍 def addbooks(request):
# 通過form/ModelForm以及校驗標簽渲染字段以及輸入框
if request.method == 'POST':
form = Bookform(request.POST)
if form.is_valid():
form.save()
return redirect('/books/')
else:
return render(request, 'addbooks.html', {'form': form})
else:
# form=BookForm() #form組件形式,根據字段選擇不同的字段類型
return render(request, 'addbooks.html', {'form': form})

#編輯書籍 def editbooks(request, editbook_id):
editbook=models.Book.objects.filter(pk=editbook_id).first()
if request.method == 'POST':
form=BookForm(request.POST)
if form.is_valid():
form.save()
return redirect('/books/')
else:
return render(request,'editbooks.html',{'form':form})
else:
form=BookForm(edit_book)
return render(request,'editbooks.html',{'form':form})

?

轉載于:https://www.cnblogs.com/tjp40922/p/10279933.html

總結

以上是生活随笔為你收集整理的关于form组件的补充-------formChoice的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。