Python Django:使用外键预填充表单字段
在创建Django表单的过程中,我想知道如何用默认值预填充ForeignKey字段 想象一下拥有以下模型:Python Django:使用外键预填充表单字段,python,django,django-models,django-forms,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
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,我需要显示一个字符域和一个整数域。我还需要预先填充foreignkey字段,因为我已经知道它们。我提出的子类型A的表单如下所示:
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',)
然后在回来的路上,我应该能够找到正确的模型和外键(整数)。然而,这看起来并不是最好的主意,也不是很安全。在表单中预先填充某种外键字段的首选方式是什么?有什么建议吗?我选择
modelcoocefield
这里:。一本涵盖所有这些细微差别的Django烹饪书将非常特别