Django: ManyToManyField с дополнительной колонкой - PullRequest
1 голос
/ 19 апреля 2011

Я пытаюсь создать форму заявления о приеме на работу с помощью Django.

По сути, я создал две модели.

  • softwareskill_model
  • application_model

Администратор может войти в админ-секцию и добавить новые программные записи в базу данных.Application_model ссылается на эти записи / записи программного обеспечения, используя поле ManyToMany:

class softwareskill_model(django.db.models.Model):
    name = django.db.models.CharField(max_length=200)

class application_model(django.db.models.Model):
    # ...
    softwareskills = django.db.models.ManyToManyField(softwareskill_model)

Так что, если кто-то хочет подать заявку на работу, он может выбрать, какие программные пакеты он использует.

Теперь я хочу, чтобы кандидат оценил 1-6 для каждого выбранного им программного навыка.Как вы это делаете?

Я использую базу данных SQLite3 и обнаружил, что ManyToManyField создает новую таблицу для хранения отношений.В моем случае это выглядит так:

| ID | application_model_id | softwareskill_model_id |

Я предполагаю, что я просто добавлю новый столбец, чтобы он выглядел так:

| ID | application_model_id | softwareskill_model_id | Rating |

Это возможно / лучший способсделай это?Как?

Я очень плохо знаком с Django, базами данных и веб-разработками в целом и надеюсь, что вы мне поможете: -)!

Спасибо, Генри

1 Ответ

2 голосов
/ 19 апреля 2011

до - это то, что вам нужно использовать, например,

class softwareskill_model(django.db.models.Model):
    name = django.db.models.CharField(max_length=200)

class application_model(django.db.models.Model):
    # ...
    softwareskills = django.db.models.ManyToManyField(softwareskill_model, through="ApplicationSoftwareSkill")

class ApplicationSoftwareSkill(models.Model):
    softwareskill = models.ForeignKey(softwareskill_model)
    application = models.ForeignKey(application_model)
    # extra fields here e.g.
    rating = models.IntegerField()
...