Django ModelForm - Van-e mód a mezők dinamikus meghatározására, de nem utolsó mezőként?

Van egy ModelFormom a Django 2.1-gyel, és néhány mezőt áthelyeztem egy másik modellbe. A make_migrations hívása hibát okoz, mert ezek a mezők nem léteznek az aktuális modellben. A mezők egy részét hozzáadtam az űrlaphoz, de az egyik mező egy TranslatedField (a django-lefordított mezőkből), ezért jelenleg 2 mező van, és a jövőben a nyelvek számától függően még több lehet. A mező neve város, és jelenleg hibaüzenetet kapok: "Ismeretlen mező (k) (city_en, city_he) megadva a SiteProfile számára" (mert 2 nyelvet használok - "en" és "he") -, de az összes mezőt dinamikusan szeretné létrehozni egy for for ciklussal a projektben használt nyelvek felett. Felülírhatom (és ez jó programozási módszer) a __új_ metódust, vagy van más módszer? Inkább nem kódolom a konkrét mezőneveket (city_en és city_he), mert ezek a jövőben változhatnak, attól függően, hogy hány nyelvet használunk.

django

A jelenlegi elkötelezettségemet (nem működik) a GitHubon láthatja.

És ennek az ágnak a jelenlegi kódja.

Szeretném tudni, hogy mi a legjobb programozási módszer a mezők dinamikus listájának meghatározására (amelyek mindegyike megegyezik, és csak az egyiket fogják használni, a másikat eltávolítják a __init__ módszerben) egy ModelForm-ban, ahová a mezőket mentik egy másik modellben (2 modell van, de csak egy forma).

A make_migrations futtatásakor még mindig nem követtem el az áttéréseket e hiba miatt.

(Definiáltam egy make_migrations parancsot, amely csak makemigrációkat hajt végre)

Az űrlap (azzal, hogy megpróbáltam felülírni __new__):

1. frissítés: Arra gondolok, hogy definiáljam ezeket a mezőket a __init__ módszerben, miközben eltávolítom őket a Meta osztály mezőiből, de jó megközelítés? Olyan mezők definiálása, amelyek nem szerepelnek a mezők listájában ?

Django arra figyelmeztet, hogy ne határozzon meg egyértelműen mezőket.

Erősen ajánlott, hogy kifejezetten állítson be minden mezőt, amelyet az űrlapban a mezők attribútummal kell szerkeszteni. Ennek elmulasztása könnyen biztonsági problémákhoz vezethet, amikor egy űrlap váratlanul lehetővé teszi a felhasználó számára bizonyos mezők beállítását, különösen akkor, ha új mezőket adnak a modellhez. Az űrlap megjelenítési módjától függően előfordulhat, hogy a probléma nem is látható a weboldalon.

Az alternatív megközelítés az lenne, ha az összes mezőt automatikusan felvenné, vagy csak némelyiket tiltaná. Ez az alapvető megközelítés köztudottan sokkal kevésbé biztonságos, és komoly kihasználásokhoz vezetett a főbb webhelyeken (pl. GitHub).

Szeretném tudni, hogy van-e megoldás a nyelvek kemény kódolása nélkül. Jelenleg keményen kódoltam a nyelveket:

2. frissítés: Megtudtam, hogy ezt a mezőt dinamikusan hozzáadhatom, ha ezt a sort hozzáadom az űrlap __init__ metódusához:

Ezután távolítsa el a Meta osztály mezőlistájáról és a keményen kódolt definícióból a formában. De a mező a mező utolsó mezőként jön létre, és azt akarom, hogy középen legyen. Van-e mód arra, hogy ezt a mezőt középen hozzáadjuk?