Джанго - Какая модель для ограниченных связанных данных - PullRequest
0 голосов
/ 12 января 2012

Мне нужна модель, которая будет связана максимум с 3 данными (одного и того же типа).

Вот пример:
У меня есть кандидаты, которые должны пройти 3 шага для набора

class Candidate(models.Model):
  user = models.ForeignKey(User)
  step1 = models.TextField(blank=True, null=True,)
  step2 = models.TextField(blank=True, null=True,)
  step3 = models.TextField(blank=True, null=True,)

Для каждого шага есть обзор нескольких человек

class Review(models.Model):
  candidate = models.ForeignKey(Candidate)
  reviewer = models.ForeignKey(User)
  step1 = models.TextField(blank=True, null=True,)
  step2 = models.TextField(blank=True, null=True,)
  step3 = models.TextField(blank=True, null=True,)
  • Если бы я разложил эти объекты, что дало бы мне 4 объекта вместо 2
    такие как Candidate, Review, CandidateStep и ReviewStep?
    • Если да, как я могу ограничить 3 шага?
    • Если нет, то как легко выполнить итерации по шагам?

Пример данных :

obj, created = Candidate.objects.get_or_create(
  user = SelectedCandidate
, defaults = {'step1': '', 'step2': '', 'step3': ''}
)
obj.step1 = 'I\'m really motivated'
obj.step2 = 'I\'m able to do this job'
obj.save()

obj, created = Review.objects.get_or_create(
  user = request.user
, defaults = {'step1': '', 'step2': '', 'step3': ''}
)
obj.step1 = 'He seems over motivated'
obj.save()

1 Ответ

1 голос
/ 12 января 2012

А как насчет трех объектов:

class Candidate(models.Model):
    name = models.CharField(max_length=50)

class Step(model.Model):
    candidate = models.ForeignKey(Candidate)
    text = models.TextField(blank=True)

class Review(models.Model):
    reviewer = models.ForeignKey(User)
    step =  models.OneToOneField(Step)
    text = models.TextField(blank=True)

как я могу ограничиться 3 шагами?

На уровне просмотра.Если вы собираетесь использовать ModelFromset, используя опцию max_num .

...