Sisäkkäisten lomakkeiden ja -sarjojen käsittely
Project description
django-pumaska
Sisäkkäisten lomakkeiden ja -sarjojen käsittely
Nidotun lomakkeen HTML-oletusesitys (str(lomake)) sisältää ulomman lomakkeen kenttien lisäksi joko
- sisemmän yksittäisen lomakkeen kentät sellaisenaan tai
- sisemmän lomakesarjan lomakkeet sellaisenaan, sekä sitä vastaavan Django-hallintolomakkeen ja tarvittavan Javascript-lomakesarjankoodin
Nidotun lomakkeen tallennus tallentaa ulomman lomakkeen (A) lisäksi sisemmän lomakkeen tai lomakesarjan (B) joko
- ennen ulompaa lomaketta, mikäli B-kentät ovat pakollisia suhteessa A-tietueeseen
- ulomman lomakkeen jälkeen muuten
Käyttö
Nido useita lomakkeita yhteen nido-funktion avulla:
from django import forms
from pumaska import nido
from .mallit import Asiakas, Asiakasosoite, Lasku, Paamies, Rivi
lomake = nido(
forms.modelform_factory(Asiakas, fields=['nimi']),
forms.modelform_factory(Asiakasosoite, fields=['osoite']),
nido(
nido(
forms.modelform_factory(Lasku, fields=['numero']),
forms.modelform_factory(Paamies, fields=['nimi']),
),
forms.modelform_factory(Rivi, fields=['summa']),
),
)
print(lomake(instance=Asiakas.objects.get(pk=123)))
Funktiota voidaan käyttää myös python-koristeena:
from django import forms
from pumaska import nido
class Asiakasosoitelomake(forms.ModelForm):
class Meta:
model = Asiakasosoite
fields = ['osoite']
class Laskulomake(forms.ModelForm):
class Meta:
model = Lasku
fields = ['numero']
@nido(Asiakasosoitelomake)
@nido(Laskulomake)
class Asiakaslomake(forms.ModelForm):
class Meta:
model = Asiakas
fields = ['nimi']
assert Asiakaslomake(data={
'nimi': 'Testimies Matti',
'asiakasosoite-TOTAL_FORMS': '1',
'asiakasosoite-INITIAL_FORMS': '0',
'asiakasosoite-MIN_NUM_FORMS': '0',
'asiakasosoite-MAX_NUM_FORMS': '1000',
'asiakasosoite-0-osoite': 'Testitie 2',
'lasku-TOTAL_FORMS': '2',
'lasku-INITIAL_FORMS': '0',
'lasku-MIN_NUM_FORMS': '0',
'lasku-MAX_NUM_FORMS': '1000',
'lasku-0-numero': '12345',
'lasku-1-numero': '15445',
}).is_valid()
Parametrit:
Funktio ottaa nimeämättöminä parametreina yhteen nidottavat lomakeluokat (forms.ModelForm).
Nimettyinä parametreinä voidaan antaa:
tunnus: ulompaan lomakkeeseen asetetun määreen nimi, sisemmän lomakkeenprefix-parametriavain_a: viittaus A-lomakkeen kuvaamalta tietueelta B-lomakkeen kuvaamalle tietueelleavain_b: viittaus B-lomakkeen kuvaamalta tietueelta A-lomakkeen kuvaamalle tietueellepakollinen_b: ovatko B-lomakkeen kentät pakollisia A-lomakkeen tallentamisen kannalta?useita: luodaanko lomakesarja, joka ottaa vastaan useita B-lomakkeita?
Kaikki em. parametrit poimitaan oletuksena automaattisesti mallien metatietojen perusteella.
Käyttöesimerkkejä:
Ks. pumaska/testit.py.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file django_pumaska-1.4.7.tar.gz.
File metadata
- Download URL: django_pumaska-1.4.7.tar.gz
- Upload date:
- Size: 20.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.12.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
89caa70d65c60e923b6de031a1950f91780ff894ca73bbda9316008800b41084
|
|
| MD5 |
27a88d5256ea9eaa3f8fb3a85161c739
|
|
| BLAKE2b-256 |
e5756ffffc10508d4e0b8aed6302c4c4c946aa76ec7852f807c9005017ed5d2f
|
File details
Details for the file django_pumaska-1.4.7-py3-none-any.whl.
File metadata
- Download URL: django_pumaska-1.4.7-py3-none-any.whl
- Upload date:
- Size: 23.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.12.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
082807ee621f7cbbd2f8ba3a31666a2e575424a80cb8e2c178cd1acaa5561d12
|
|
| MD5 |
c84e98515a63eeac1e0a45d9eb804d97
|
|
| BLAKE2b-256 |
7d37b2f1d2707bbf3b5eeb039376c16eec1397a9381a593eb93bd185e5b6d3a8
|