Я делаю веб-приложение для отслеживания задач ( также доступен полный исходный код ), и у меня есть структура базы данных, в которой каждая задача имеет заголовок, описание и некоторые количество экземпляров, каждый из которых может быть помечен как неполный / неполный:
class Task(models.Model):
title = OneLineTextField()
description = models.TextField(blank=True)
class TaskInstance(models.Model):
task = models.ForeignKey(Task, on_delete=models.CASCADE)
is_complete = models.BooleanField()
Задача и экземпляры могут совместно использоваться по отдельности, хотя доступ к экземпляру должен подразумевать доступ для чтения к задаче. Это предназначено для ситуаций в классе, когда учитель создает задание и назначает его своим ученикам.
class TaskPermission(models.Model):
task = models.ForeignKey(Task, on_delete=models.CASCADE, related_name='permissions')
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='task_permissions_granted')
shared_by = models.ForeignKey(User, on_delete=models.PROTECT, null=True, related_name='task_permissions_granting')
can_edit = models.BooleanField(default=False)
class Meta:
unique_together = 'task', 'user', 'shared_by',
class TaskInstancePermission(models.Model):
task_instance = models.ForeignKey(TaskInstance, on_delete=models.CASCADE, related_name='permissions')
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='task_instance_permissions_granted')
shared_by = models.ForeignKey(User, on_delete=models.PROTECT, null=True, related_name='task_instance_permissions_granting')
can_edit = models.BooleanField(default=False)
class Meta:
unique_together = 'task_instance', 'user', 'shared_by',
У меня вопрос, как создать форму для TaskInstance
s с полями для ее is_complete
, а также для Task
'title
и description
. Будет ли что-то вроде этой работы? Или мне нужно реализовать собственные методы save
и clean
?
class TaskForm(ModelForm):
class Meta:
model = TaskInstance
fields = ('is_complete', 'task__title', 'task__description')