Python 在Django ModelForm中添加并初始化自定义字段

Python 在Django ModelForm中添加并初始化自定义字段,python,django,forms,model,django-1.11,Python,Django,Forms,Model,Django 1.11,我觉得我遗漏了一些非常基本的要点,但无法解决这个问题。 假设我有这样一个模型: class Person(models.Model): first_name = models.CharField(max_length=256, blank=True) # this is weird field, but needed for my usecase last_name = models.WeirdCustomField(max_length=256, blank=True)

我觉得我遗漏了一些非常基本的要点,但无法解决这个问题。
假设我有这样一个模型:

class Person(models.Model):
    first_name = models.CharField(max_length=256, blank=True)
    # this is weird field, but needed for my usecase
    last_name = models.WeirdCustomField(max_length=256, blank=True)
这里有一个表单,我想定制一下(注释):

现在,在
shell中(在所有导入之后…)


我想我对互联网的研究非常深入,但无法找到解决此类问题的方法。

您必须设置初始值。在init中,尝试用以下代码替换

self.fields['last_name'].initial = last_name
self.fields['my_field'].initial = my_field
也可以在创建表单实例时传递初始值

form = PersonForm(instance=person, initial={'last_name'='Smith', 'my_field'='test123'})

这是推荐的方法。根本不需要重写init方法。

太棒了,我不认为我自己会在不久的将来找到它,谢谢!我还需要说,这是非常违反直觉的,但我想这是框架方式。尝试在init中打印self.fields['my_field']。您可以看到它是什么。如何在通用视图中执行此操作??您使用的是哪个通用视图?
self.fields['last_name'].initial = last_name
self.fields['my_field'].initial = my_field
form = PersonForm(instance=person, initial={'last_name'='Smith', 'my_field'='test123'})