Хорошо - скажем, у меня есть настройка, где у меня есть набор людей и набор навыков и набор уровней.Структура модели базы данных django - через модели
Каждое умение имеет поднабор уровней, связанных с ним - для каждого навыка возможно различное подмножество. Каждый человек может выполнять подмножество навыков на подмножестве уровней. Каждое умение, которое человек предлагает на определенном уровне, имеет цену, связанную с ним.
E.g. Человек А может выполнять навыки каратэ и творческого письма. Он предлагает каратэ на уровне черного пояса за 40 фунтов стерлингов и красный уровень ремня за 30 фунтов стерлингов и творческое письмо на уровне начинающих за 25 фунтов стерлингов.
Вот как у меня есть настройка без уровня.
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)
Но как я могу включить уровень? Могу ли я добавить внешний ключ на уровень с помощью сквозной модели до предлагаемого умения. Есть ли способ, который можно было бы просмотреть в администраторе, чтобы вы могли редактировать список навыков и уровней, которые человек предлагает на странице администратора?
Спасибо за ответ @jcs, что делает SkillLevels? ForeignKey to Skill и m2m to Level? – lac
Да точно. Он присоединяется к вашему навыку «каратэ» с синим поясом уровней, «красным поясом» ... тогда предлагаемое умение представляет собой комбинацию из двух с определенной ценой. Поскольку цена специфична для комбинационного навыка/уровня не только умение – jcs
Я просто редактировал классы Person и SkillLevels. Теперь человек связан с SkillOffered, SkillOpered связан с SkillLevels, который является комбинационной таблицей для навыка и уровня. – jcs