1

我正在制作一个任务跟踪器 webapp(也可以使用完整的源代码),并且我有一个数据库结构,其中每个任务都有一个标题、描述和一些实例,每个都可以标记为不完整/不完整:

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',

我的问题是如何为TaskInstances 创建一个表单,其中包含它的字段is_complete,以及它Tasktitledescription。像这样的东西会起作用吗?还是我需要实现我自己的saveclean方法?

class TaskForm(ModelForm):
    class Meta:
        model = TaskInstance
        fields = ('is_complete', 'task__title', 'task__description')
4

1 回答 1

0

我想inlineformset_factory这就是我要找的!

实际上,它似乎没有用:它是针对同一类型的多种形式,而不是不同的类型......

于 2019-03-24T22:45:18.500 回答