EAV-Django

Programinė įranga Screenshot:
EAV-Django
Programinė detalės:
Versija: 1.4.4
Įkėlimo datą: 14 Apr 15
Kūrėjas: Andrey Mikhaylenko
Licencija: Nemokamai
Populiarumas: 2

Rating: nan/5 (Total Votes: 0)

EPV-Django yra daugkartinio Django programa, kuri suteikia ūkio subjekto atributas vertė duomenų modelio įgyvendinimą.
& Nbsp; Subjektas atributų-Vertė modelis (EPV), taip pat žinomas kaip objektas atributų vertės modelio ir atviros schema, kuri yra naudojama tais atvejais, kai atributų (savybės, parametrai), kurie gali būti naudojami apibūdinti dalyką numeris (" subjektas "arba" objektas ") yra potencialiai labai plati, tačiau skaičius, kad iš tikrųjų bus taikomos tam tikros subjekto yra gana kuklus.
EPV-Django puikiai veikia su tradicine RDBVS (išbandyta ant SQLite ir MySQL).
Prioritetai
Taikymas išaugo iš interneto parduotuvė projektą, todėl yra gana praktiškas ir ne tik akademinės pratybos. Pagrindiniai prioritetai buvo:
& Nbsp; 1. lankstumas duomenimis,
& Nbsp; 2. efektyvumas užklausų ir
& Nbsp; 3. Didžiausias prižiūrėti, be redagavimo kodą.
Žinoma, tai reiškia, kompromisus, o tikslas buvo rasti mažiausiai kenksmingas derinį bendruoju atveju.
Įranga
Visos numatytos modeliai yra abstraktus, ty EPV-Django neišsaugo jokio savo lentelių informaciją. Vietoj to, ji suteikia galimybę savo modelius, kurie turės paramą EPV out of the box pagrindas.
EPV API apima:
& Nbsp; * Sukurti / atnaujinti / susipažinti: modelis atvejų teikia STANDART API tiek "Real" laukų ir EPV atributus. Abstrakcijos, tačiau neturi stovėti savo kelią ir suteikia priemones, kaip spręsti su pagrindinės medžiagos.
& Nbsp; * Užklausa: BaseEntityManager apima vienodą požiūrį į filtro () ir neįtraukti () užklausai "Real" ir EPV atributus.
& Nbsp; * Pritaikomi Schemata už atributus.
& Nbsp; * Admin: visi dinaminiai požymiai gali būti atstovaujama ir pakeistas Django admin be ar su mažai pastangų (naudojant eav.admin.BaseEntityAdmin). Schemata gali būti redaguojama atskirai, kaip paprastų Django modelio objektų.
& Nbsp; * aspektai: Aspektas paieška svarbus bruožas internetinių parduotuvių, katalogų ir kt esmės jums reikės formą žymintis tam tikrą poaibį modelio atributai su atitinkamais raštai ir pasirinkimų, kad vartotojas gali pasirinkti pageidaujamas reikšmes kai kurių savybių, pateikti forma ir gauti tinkančių daiktų sąrašą. Apskritai atveju django filtras būtų padaryti, bet ji neveiks su EPV, todėl EPV-Django suteikia pilną įrankių, kad.
Pavyzdžiai
Leiskite apibrėžti EPV patogus modelis, sukurti EPV atributą ir pamatyti, kaip jis elgiasi. Iki "EPV atributus" Aš turiu galvoje tuos, kurie saugomi duomenų bazėje, kaip atskirus objektus, bet pasiekti ir ieškojau taip, lyg jie būtų stulpeliai įmons lentelėje:
nuo django.db importo modelių
nuo eav.models importo BaseEntity, BaseSchema, BaseAttribute
klasė Vaisiai (BaseEntity):
& Nbsp; title = models.CharField (MAX_LENGTH = 50)
klasė schema (BaseSchema):
& Nbsp; perdavimas
klasė Attr (BaseAttribute):
& Nbsp; schemos = models.ForeignKey (schemos, related_name = 'attrs)
# Python lukštais:
# Define atributas pavadintas "spalva"
>>> Spalva = Schema.objects.create (
... Title = "Spalva",
... Name = "spalva", # rūpinasi, užpildyti / slugify iš pavadinime
... Datatype = Schema.TYPE_TEXT
...),
# Sukurti subjektą
>>> E = Fruit.objects.create (pavadinimas = "" Apple "color =" žaliųjų ")
# Apibrėžti "Real" ir EPV atributus tą patį kelią
>>> E.title
"Apple" "
>>> E.colour
"Žaliųjų"
>>> E.save () # susijęs su EPV atributus automatiškai
# Sąrašas EPV atributai kaip ATTR atvejais
>>> E.attrs.all ()
[]
# Paieška kurį EAV atributas, kaip jei ji buvo paprastas laukas
>>> Fruit.objects.filter (color = "geltona)
[]
# Visi sudėtiniai paieška "yra palaikomi
>>> Fruit.objects.filter (colour__contains = 'klykauti)
[]
Atkreipkite dėmesį, kad mes galime pasiekti, keisti ir užklausos spalva kaip jei ji buvo tikra subjektas lauke, bet tuo pačiu metu jos pavadinimas, tipas ir net egzistavimas yra visiškai apibrėžta schema, pavyzdžiui. Schemos objektas gali būti suprantama kaip klasės, ir susijusios ATTR objektai yra jo atvejų. Kitaip tariant, Schemos objektai yra tarsi CharField, IntegerField ir tokių, tik apibrėžta duomenų lygį, o ne sunkiai koduojami Python. Ir jie gali būti "priderinta" bet subjektas (išskyrus atvejus, kai jūs įtraukėte užsakymą apribojimus, kurie yra ne EPV-Django atsakomybės sritis).
Iš atributų vardai apibrėžta susijusios schematos. Tai gali sukelti baimę, kad kai pavadinimas yra pakeistas, kodas ketina nutraukti. Tiesą sakant, tai ne tas atvejis, kaip vardai tik tiesiogiai naudojamas rankinis paieška ". Visais kitais atvejais paieška "yra pastatyta be sunkiai koduojami pavadinimų ir Europos pridėtinė vertė objektai yra tarpusavyje pirminiai raktai, o ne pavadinimais. Pavadinimai ir tuomet, kai formos, bet formos yra generuojami, priklausomai nuo esamos būklės metaduomenų, todėl jūs galite saugiai pervadinti schematos. Ką jūs galite sulaužyti nuo admin sąsaja tipai. Jei pakeisite duomenų tipą apie schemą, visi jos atributai išliks tas pats, bet naudosime kitą stulpelį saugoti savo vertybes. Kai jūs atkurti duomenų tipą, anksčiau saugomi vertės matomi dar kartą.
Žr testai daugiau pavyzdžių.
Duomenų tipai
Meta duomenys varoma struktūra apima lankstumą, bet reiškia, kai kompromisus. Vienas iš jų yra didelio skaičiaus prisijungia (ir todėl lėčiau užklausas). Kitas yra mažiau duomenų tipai. Teoriškai, mes galime remti visas duomenų tipus galima už saugojimo, tačiau praktikoje tai reikštų sukurti daug stulpelių per atributą tik su mažai naudojami - būtent tai, ko mes stengiamės, kad būtų išvengta naudojant veikimo vertę. Tai kodėl EPV-Django palaiko tik keletą pagrindinių tipų (nors galite pratęsti šį sąrašą, jei reikia):
& Nbsp; * Schema.TYPE_TEXT, TextField;
& Nbsp; * Schema.TYPE_FLOAT, FloatField;
& Nbsp; * Schema.TYPE_DATE, DateField;
& Nbsp; * Schema.TYPE_BOOL, NullBooleanField;
& Nbsp; * Schema.TYPE_MANY kelių pasirinkimų (ty verčių sąrašą).
Visi EPV atributai saugomi kaip įrašų lentelėje su unikaliomis derinius nuorodomis į subjektų ir schematos. (Subjektas yra lyginamas per CONTENTTYPES sistemą, schemos yra lyginamas per užsienio raktu.) Kitaip tariant, ten gali būti tik vienas atributas su konkrečiu subjektu ir schemos. Schemos yra atributas apibrėžimas. Schemos apibrėžia vardą, pavadinimą, duomenų tipą ir kitų savybių, kurios taikomos bet kuriai šio schema atributas skaičių. Kai mes atidaryti ar ieškoti EPV atributus, EPV mašinos visada naudoja schematos kaip atributų metaduomenų. Kodėl? Kadangi atributas pavadinimas yra saugomas susijusios schemos ir vertė yra saugomi atributų lentelės stulpelyje. Mes nežinome, kuris stulpelis yra kol mes pažvelgti metaduomenų.
Aukščiau pateiktame pavyzdyje mes jei jau tik grojo su teksto atributu. Visi kiti tipai elgiasi lygiai taip pat, išskyrus TYPE_MANY. Daugelis su daugeliu "yra ypatingas atvejis, nes ji apima papildomą modelį pasirinkimų. EPV-Django suteikia abstraktų modelį, bet jums reikia nustatyti konkretų modelį (pvz Choice), ir taškas į jį iš atributo modelio (ty įdėti užsienio raktas pavadintas "pasirinkimas"). Pasirinktos modelis taip pat turės atkreipti dėmesį į schemą. Patikrinkite testai Pavyzdžiui

Kas naujo , šioje laidoje:.

  • Sukurkite / atnaujinti / apsilankymas: modelio pavyzdžių teikti Standart API tiek & quot; nekilnojamojo & quot; laukai ir EAV atributai. Abstrakcijos, tačiau neturi stovėti savo kelią ir suteikia priemones, kaip spręsti su pagrindinės medžiagos.
  • Užklausa: BaseEntityManager apima vienodą požiūrį į filtrą (), įskaitant () užklausai & quot; nekilnojamojo & quot; ir EPV atributus. "
  • Įprastiniai Schemata už atributus. "
  • Admin: visi dinaminiai požymiai gali būti atstovaujama ir pakeistas Django admin be ar su mažai pastangų (naudojant eav.admin.BaseEntityAdmin). Schemata gali būti redaguojama atskirai, kaip paprastų Django modelio objektų.
  • aspektai: Aspektas paieška svarbus bruožas internetinių parduotuvių, katalogų ir kt esmės jums reikės formą, atitinkančią tam tikrą poaibį modelio požymius su atitinkamais raštai ir pasirinkimų, kad vartotojas gali pasirinkti pageidaujamas reikšmes kai kurių savybių, pateikti forma ir gauti tinkančių daiktų sąrašą. Apskritai atveju django filtras būtų padaryti, bet ji neveiks su EPV, todėl EPV-Django suteikia pilną įrankių, kad.

Reikalavimai :

  • Python
  • Django

Kita programinė įranga kūrėjas Andrey Mikhaylenko

Monk
Monk

14 May 15

Timetra
Timetra

14 Apr 15

Komentarai EAV-Django

Komentarai nerastas
Pridėti komentarą
Pasukite ant paveikslėlio!