我正在制作a task tracker webapp(也可以使用the full source code),并且我有一个数据库结构,其中每个任务都有标题,描述和一些实例,可以分别将其标记为不完整/不完整:

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创建一个带有其is_complete字段以及Tasktitledescription的表单。这样的事情行吗?还是我需要实现自己的saveclean方法?

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

最佳答案

我认为inlineformset_factory是我想要的!

实际上,它似乎没有用:它用于相同类型的多种形式,而不是不同类型的……

关于python - Django形式:外键的引用字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55326345/

10-11 23:00
查看更多