0

最简单的解释方法就是说出我想要做什么。

我有一个访问模型和一个主题模型。访问与主题是外键的,因此我可以将主题作为我的表单中的选择字段(这是基于访问模型构建的模型表单)。

我还想要其他与主题相关的数据,我想知道访问它的最佳方法是什么。

我的模型、形式和我最终想要的如下。

楷模

class Subject(models.Model):
    def __unicode__(self):
        return self.subject_name
    subject_name=models.CharField(max_length=60,null=True, blank=True)
    subject_number=models.CharField(max_length=10,null=True, blank=True)
    birthdate=models.DateField("Date of Birth",null=True, blank=True)
    cohort=models.ForeignKey("Cohort",null=True, blank=True)

class Visit(models.Model):
    def __unicode__(self):
        return self.id
    subject=models.ForeignKey("Subject")
    ageband=models.ForeignKey("AgeBand",null=True, blank=True)
    visit_date=models.DateField("Visit Date",null=True, blank=True)

形式

class TestForm(ModelForm):
    class Meta:
        model = Visit
        widgets = {
            'visit_date': DateInput(attrs={'class':'datepicker'}),
        }

简单描述我想要的形式

主题名称_ (有这个)

主题编号_ _(有这个)

Subject Birthdate _ _(来自 Subject.birthdate,没有这个)

访问日期_(有这个)

4

1 回答 1

0

ModelForm仅表示来自一个模型的字段。如果你想同时使用这两个模型,你需要使用一个InlineFormSet,它允许你组合两个ModelForms。从文档中:

内联表单集是模型表单集之上的一个小型抽象层。这些简化了通过外键处理相关对象的情况。

这是一个类似的答案,描述了如何创建一个InlineFormSet.

于 2013-11-07T19:14:15.597 回答