Kénytelen vagyok ismerkedni a Djangoval, kaptam egy megoldandó feladatot.
Apránként előre is jutok vele, de most megakadtam.
A feladat a következő:
egy SQL táblában van egy varchar mező, ami speciálisan formázott adatot tartalmaz. (Más program használja így a háttérben)
A django admin form és a model class kész. A mezőhöz tartozó form widget a default textarea.
A felhasználó a felvitelnél soronként adja meg a mező tartalmát (voltaképp egy lista elemeit), amit én a modelnél a felüldefiniált save metódusnál szépen megformázok, hogy megfelelő módon kerüljön be az adatbázisba.
Ez a része rendben működik, amivel nem boldogulok, az a másik irány: a rekord kiválasztásakor a megnyíló formon a mező tartalma speciális formázás nélkül jelenjen meg - ahogy azt a kezelő korábban felvitte.
Köszönöm
- 1321 megtekintés
Hozzászólások
Ha jól értem a problémád, érdemes erre egy saját widget-et írnod, amit aztán a formodban megadhatsz a fieldednek. Talán érdemes a django.forms.widgets.MultiWidget-ből származtatnod.
Egyébként ha egy listát tartalmaz ez az elem, akkor adattárolás szempontjából nem lenne jobb egy külön adattáblában gyűjteni ezeket(akár ideiglenesen), és akkor használhatnál az adminban is a formseteket (inline-okat...)
--
laco
- A hozzászóláshoz be kell jelentkezni
Szia,
a db szerkezetéhez nem nyúlhatok, azzal kell dolgoznom, ami van.
A példa kedvéért:
db-ben ez van ***valami***valami***valami***
Kezelő ezt akarja látni a form textarea widgetében:
valami
valami
valami
Ha csinálok egy saját widgetet, abban módom van formázni a kapott mező értékét?
Azt gondoltam, a formázást az adminnak kell elvégezni, mielőtt a formnak átadja a mezők értékeit..., vagy esetleg a modelben lehet leírni a mező megjelenítésének módját
- A hozzászóláshoz be kell jelentkezni
ja, akkor még egyszerűbb a megoldás: a Textarea widgetből leszármaztatsz egy MyTextareaWidget-et. egyedül a render() metódust kell felülírni:
def render(self, name, value, attrs=None):
if value is None:
value = ''
else:
# ide jon a value atalakitasa olyanra amilyenre szeretned
return super(MyTextarea, self).render(name, value, attrs)
--
laco
- A hozzászóláshoz be kell jelentkezni
Köszönöm a segítséget :)
- A hozzászóláshoz be kell jelentkezni