我有一个formset,它是创建任务的任务和所有者之间的简单多对多关系,然后在所有者页面上使用内联formset分配它们。
#model.py
class Owner(models.Model):
name = models.CharField(max_length=30)
role = models.CharField(max_length=30)
def __str__(self):
return self.name
class Task(models.Model):
name = models.CharField(max_length=40)
description = models.CharField(max_length=30)
created = models.DateTimeField()
owner = models.ManyToManyField(Owner, through='OwnerTask')
def __str__(self):
return self.name
class OwnerTask(models.Model): # table to store which node has which point
owner=models.ForeignKey(Owner)
task=models.ForeignKey(Task)
def __str__(self):
return self.owner
#form.py
OwnerTaskFormSet = inlineformset_factory(Owner, Task.owner.through, fields=('task',), extra=1)
通过视图和模板推送这个工作正常,我得到了我想要的formset。
是否有办法为此formset创建更多字段,这些字段不是数据输入,而是相关的显示字段。
例如{{OwnerTaskFormSet.task}}是输入,但{{OwnerTaskFormSet.task.description}}只是一个段落标记。
我认为这需要在表单中作为窗口小部件完成,但我不能将它拼凑在一起。
像
这样的东西OwnerTaskFormSet = inlineformset_factory(Owner, Task.owner.through, form=OwnerTaskForm, extra=1)
class OwnerTaskForm(ModelForm):
class Meta:
model = OwnerTask
fields = ( 'task.name', 'task.description')
widgets = ........ render task.description as <p>......
我知道我可以使用模型返回执行此操作,因此当您选择任务时,您将获得所有信息,如下所示。
def __str__(self):
return self.owner + ' ' + self.task.name + ' ' + self.task.description
但是这一切都在一个盒子里......除非有人能想到别的东西,否则可能必须成为我的解决方案?
由于