2020年9月30日 星期三

玉山銀行e.Fingo 好友邀請碼:3VW1aK1N

玉山銀行e.Fingo 


好友邀請碼:3VW1aK1N


大家一起來加入吧!

2020年9月22日 星期二

Django formset用法

 這周在作表單,發現這實在是個大坑啊…花了很多時間在這個上面。


首先,推薦使用model formset_factory,因為方便不少。這個功能的特色是可以直接調用

formset = myformset(request.POST)

if formset.is_valid():

  formset.save()

  return redirect <the view u want to redirect>


那要怎麼用呢?

你可以選擇在forms.py裡面import 

from django.forms import modelformset_factory


class FakeForm(forms.ModelForm):

  class Meta:

    Model = Foo

    fields = ('list of the fields')


FakeFormset = modelformset_factory(Foo, FakeForm, extra=<how many u want>)


是不是很方便呢?


如果需要更高的可控性,只好使用一般的formset,缺點就是你得自己處理裡面的表單們。

formset = FooFormset(request.POST)

if formset.is_valid:

    for form in formset:

        field = form.cleaned_data.get('the input field name of the form')

<other fields>

instance = Foo.objects.create(field=field, ....)

instance.save()

return redirect ('<the  view you want to redirect the user>') 


這樣做就可以一次新增很多筆資料了。


2020年9月14日 星期一

Django 如何在url傳入參數

參考這篇:
stackoverflow.com/questions/25345392
通常我們連結都會寫成
{% url "<url name>"%}
但是當我們需要編輯一個項目時,往往需要傳入一個id
/<url >/<int:id>/
那這個要怎麼寫呢?
其實很簡單,就是
{% url '<url name>' id=item.id %}

文中還特別提到,當有複數個參數時,
{% url '<url name>' <param1>= sth.id <param2>=<sth else>.id%}