在创建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字段的首选方法是什么?有什么建议吗?