Database model structure django - through models -


ok - lets have setup have set of people , set of skills , set of levels.

each skill has subset of levels associated - different subset possible each skill. each person can perform subset of skills @ subset of levels. each skill person offers particular level has price associated it.

e.g. person can skills karate , creative writing. offers karate @ black belt level £40 , red belt level £30 , creative writing @ beginner level £25.

here how have setup without level.

class person(models.model):     ...     skills = models.manytomanyfield(skill, through='skilloffered')  class skill(models.model):     ...  class skilloffered(models.model):     person = models.foreignkey(person)     skill = models.foreignkey(skill)     price = models.demicalfield(max_digits=6, decimal_places=2) 

but how can include level? can add foreign key level through model skill offered. there way viewed in admin able edit list of skills , levels person offers person admin page?

you should create level class linked skill class m2m relation. , replace skill attribute in skilloffered skill_level attribute.

class person(models.model):     ...  class skill(models.model):    ...    levels = models.manytomanyfield(levels, through='skilllevels')  class level(models.model):    ...  class skilllevels (models.model):    skill = models.foreignkey(skill)    level = models.foreignkey(level)  class skilloffered(models.model):    person = models.foreignkey(person)    skill_level = models.foreignkey(skilllevels)    price = models.demicalfield(max_digits=6, decimal_places=2) 

Comments