在Django中显示多个相关的formset字段

时间:2017-02-20 17:00:38

标签: python django

我有一个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

但是这一切都在一个盒子里......除非有人能想到别的东西,否则可能必须成为我的解决方案?

由于

0 个答案:

没有答案