Django:使用外键预填充表单字段

时间:2014-12-07 09:55:39

标签: python django django-models django-forms

在创建Django表单的过程中,我想知道如何使用默认值预填充ForeignKey字段?

想象一下有以下模型:

class Entity(models.Model):
    name = models.CharField(max_length=128)
    category = models.ForeignKey(Category)
    subtype = models.ForeignKey(Subtype)
    # field for subtype A
    fieldForA = models.CharField(max_length=20)
    # field for subtype B
    fieldForB = models.IntegerField()

class Category(models.Model):
        name = models.CharField(max_length=128)

class Subtype(models.Model):
    name = models.CharField(max_length=128)
    category = models.ForeignKey(Category)

对于这两种子类型,我需要一个不同的视图/形式。因此,对于子类型A,我需要显示2个字段,而对于子类型B,我需要显示字段和整数字段。我还需要事先预先填充外键字段,因为我已经知道了。子类型A I的形式看起来像这样:

class SubtypeACreateForm(forms.ModelForm):
    name = forms.CharField(max_length=128)
    category = forms.IntegerField(widget=forms.HiddenInput, initial=Category.objects.get(name='catForEntity')
    subtype = forms.IntegerField(widget=forms.HiddenInput, initial=Category.objects.get(name='a')
    fieldForA = forms.CharField(max_length=20)

    class Meta:
        model = Entity
                exclude = ('fieldForB',)

然后在回来的路上我应该能够找到带有foreignkeys(整数)的正确模型。但是,这看起来不是最好的主意,也不是很安全。在表单中预先填充一些ForeignKey字段的首选方法是什么?有什么建议吗?

0 个答案:

没有答案