Построить модель Django для повторяющегося сегмента истории заданий пользователя веб-приложения - PullRequest
0 голосов
/ 23 января 2019

Я настраиваю модель Django для веб-приложения, однако моя текущая модель больше не будет достаточна для пользователей. Как можно расширить модель Experience , чтобы точно отразить требования к истории опыта работы?

Мое веб-приложение - это приложение для обучения, оно должно содержать подробную информацию об истории работы или опыте работы с новым преподавателем. Таким образом, репетитору с 3-мя предыдущими стажами работы необходимо будет ввести 3 разных истории опыта работы.

В настоящее время мое веб-приложение отслеживает только от 1 до 3 истории опыта работы (как видно из кода Experience Experience , приведенного ниже), но мне нужно захватить варианты использования для преподавателя, скажем, n история опыта работы .

Модель репетитора (для справки)

class Tutor(models.Model):
   """Model representing a tutor."""
   first_name = models.CharField(max_length=100)
   last_name = models.CharField(max_length=100)
   email_address = models.EmailField(max_length=100, primary_key=True)
   phone_num = models.CharField(max_length=15)
   years_of_experience = models.IntegerField(default=0)
   username = models.CharField(max_length=50, unique=True)
   ...

Модель опыта (где мне нужно собрать n историю опыта работы)

class Experience(models.Model):
    """Model representing a tutor's experience."""
    tutor = models.ForeignKey(Tutor, on_delete=models.CASCADE)

    organization_one = models.CharField(max_length=100, null=True, blank=True)
    job_position_one = models.CharField(max_length=100, null=True, blank=True)

    organization_two = models.CharField(max_length=100, null=True, blank=True)
    job_position_two = models.CharField(max_length=100, null=True, blank=True)

    organization_three = models.CharField(max_length=100, null=True, blank=True)
    job_position_three = models.CharField(max_length=100, null=True, blank=True)
    ...

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

1 Ответ

0 голосов
/ 23 января 2019

Ваша модель на самом деле верна в определенной степени. Вот что вы должны использовать:

class Experience(models.Model):
    """Model representing a tutor's experience."""
    tutor = models.ForeignKey(Tutor, on_delete=models.CASCADE)
    organization = models.CharField(max_length=100, null=True, blank=True)
    job_position = models.CharField(max_length=100, null=True, blank=True)

Тогда вы создадите дополнительные позиции с помощью:

tutor.experience_set.create(
    organization='org1',
    position='position1',
)
tutor.experience_set.create(
    organization='org2',
    position='position2',
)
tutor.experience_set.create(
    organization='org3',
    position='position3',
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...