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.
Metadata
Release files for django-pumaska 1.4.7
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| django_pumaska-1.4.7.tar.gz | 20.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| django_pumaska-1.4.7-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 43.5 kB
Release files / django_pumaska-1.4.7.tar.gz
| Download URL | django_pumaska-1.4.7.tar.gz |
|---|---|
| Size | 20.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
89caa70d65c60e923b6de031a1950f91780ff894ca73bbda9316008800b41084
|
|
BLAKE2b-256 checksum How to use checksums |
e5756ffffc10508d4e0b8aed6302c4c4c946aa76ec7852f807c9005017ed5d2f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.0 CPython/3.12.0
|
Release files / django_pumaska-1.4.7-py3-none-any.whl
| Download URL | django_pumaska-1.4.7-py3-none-any.whl |
|---|---|
| Size | 23.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
082807ee621f7cbbd2f8ba3a31666a2e575424a80cb8e2c178cd1acaa5561d12
|
|
BLAKE2b-256 checksum How to use checksums |
7d37b2f1d2707bbf3b5eeb039376c16eec1397a9381a593eb93bd185e5b6d3a8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.0 CPython/3.12.0
|