[英]Django form: reference fields from foreign key
I'm making a task tracker webapp ( the full source code is also available) and I have a database structure where each task has a title, a description, and some number of instances, that can each be marked incomplete/incomplete: 我正在创建一个任务跟踪器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()
The task and the instances can be shared separately, although access to the instance should imply read access to the task. 尽管对实例的访问应该意味着对任务的读访问权,但是可以单独共享任务和实例。 This is intended for classroom situations, where the teacher creates a task and assigns it to their students. 这适用于教室情况,教师创建任务并将其分配给学生。
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',
My question is how to create a form for TaskInstance
s with fields for its is_complete
, as well as its Task
's title
and description
. 我的问题是如何为TaskInstance
创建一个表单,其中包含is_complete
字段,以及Task
的title
和description
。 Would something like this work? 会这样的吗? Or would I need to implement my own save
and clean
methods? 或者我需要实现自己的save
和clean
方法?
class TaskForm(ModelForm):
class Meta:
model = TaskInstance
fields = ('is_complete', 'task__title', 'task__description')
I think inlineformset_factory
is what I'm looking for!我认为 inlineformset_factory
是我正在寻找的!
Actually, it does not seem to be useful: it is for multiple forms of the same type, not different types... 实际上,它似乎并没有用:它适用于同一类型的多种形式,而不是不同的类型......
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.