我有以下型号——</p>
class Book(Model):
title = CharField(max_length=100)
author = ForeignKey('Author')
class Author(models.Model):
name = CharField(max_length=100)
并有一个标准ModelForm
来Book
。
在表单中,author
是一个ModelChoiceField
,并且呈现为一个<select>
。我希望它是可以输入作者姓名的文本字段——<code>Author.name。
如果已经有同名作者,则保存的模型在其外键中使用该作者,否则创建同名作者(并在其外键中使用)——实际上,Author.get_or_create(name=posted_name_value)
.
我发现最简单的方法是将字段覆盖为CharField
,就像这样——</p>
class BookForm(ModelForm):
author = CharField()
class Meta:
model = Book
虽然我可以添加自定义clean
逻辑来执行我想要的操作,但在使用时我不能对预填充的值做同样的事情BookForm(instance=some_book_object)
-CharField
设置为Author
's pk
,而不是它的名称。
我试过这样做,但我似乎不知道怎么做。我试过覆盖东西BookForm.__init__
无济于事。
instance
与 a 一起使用时如何覆盖字段的值集ModelForm
?