Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django:使用外键预填充表单字段_Python_Django_Django Models_Django Forms - Fatal编程技术网

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

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

在创建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,我需要显示一个字符域和一个整数域。我还需要预先填充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烹饪书将非常特别