Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
167 views
in Technique[技术] by (71.8m points)

python - Django: use model_formfactory with @property model field

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
Waitting for answers

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...