I have this Django model:
# models.py
class MyModel(models.model):
_foo = models.CharField(max_length=200)
foo_link = models.Charfield(max_length=250)
@property
def foo(self):
return self._foo
@foo.setter
def foo(self, value):
self._foo = value
self.foo_link = "https://foobar.com/{}".format(value)
I want foo
to be a property, so that foo_link
changes accordingly whenever I change it.
So far, this works as expected and as described in tutorials such as this one.
Except when I try to use modelform_factory
with this property:
# views.py
from django.forms import modelform_factory
def edit_foo(request, foo_id):
mymodel = get_object_or_404(MyModel, pk=foo_id)
FooForm = modelform_factory(MyModel, fields=("foo",))
if request.method == "POST":
form = FooForm(request.POST, instance=mymodel)
if form.is_valid():
form.save()
else:
form = FooForm(instance=mymodel)
return render(request, "myapp/editfoo.html", {"form": form})
It fails with the error django.core.exceptions.FieldError: Unknown field(s) (foo) specified for MyModel
.
What did I do wrong here?
question from:
https://stackoverflow.com/questions/65643910/django-use-model-formfactory-with-property-model-field 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…