Может ли CreateView показывать дополнительные строки для каждой строки в определенном FK?
Простите, что не знаю правильной терминологии для краткого описания того, чего я пытаюсь достичь, поэтому я надеюсь, что вы сможете прочитать мое объяснение ниже. Я даже добавил изображение, показывающее результаты, которых я хочу достичь.
Предыстория + объяснение
Я рефакторирую приложение для изучения языка, готовясь сделать его Open Source. Оно фокусируется на письме и композиции. Работает оно так: пользователь может создать Post, и текст этого поста будет автоматически разделен на отдельные предложения с помощью NLP, а затем каждое отдельное предложение будет добавлено в другую таблицу PostRow. В отдельном представлении пользователь платформы может вносить исправления в этот пост. Затем все отдельные исправления добавляются в таблицу CorrectedRows.
Когда пользователь посещает представление MakeCorrection для исправления сообщения, форма, по сути, делает следующее:
- Отфильтруйте все строки PostRow для рассматриваемого поста
- Для каждой отфильтрованной строки PostRow покажите форму CorrectedRow тоже
Другими словами, если текст поста состоит из 6 предложений, то представление MakeCorrection должно показать 6 CorrectedRows.
Таблицы
class PostRow(SoftDeleteModel, TimeStampedModel):
...
post = models.ForeignKey(Post, on_delete=models.CASCADE)
sentence = models.TextField()
class CorrectedRows(SoftDeleteModel, TimeStampedModel):
...
user = models.ForeignKey(User, on_delete=models.CASCADE)
post = models.ForeignKey(Post, on_delete=models.CASCADE)
post_row = models.ForeignKey(PostRow, on_delete=models.CASCADE, default=None)
correction = models.TextField()
type = models.CharField(choices=CORRECTION_TYPE_CHOICES, max_length=3, blank=True)
is_perfect_sentence = models.BooleanField(default=False)
class MakeCorrectionView(LoginRequiredMixin, CreateView, SuccessMessageMixin):
model = CorrectedRows
success_message = _("Corrections successfully published")
# do something here to show multiple CorrectedRows depending on the number of PostRows
Спасибо за помощь в продвинутых вопросах! Как это будет называться в правильной терминологии? Я бы с удовольствием почитал об этом побольше!