我有以下型号——</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?