Ich habe eine Model
mit einer UUID als PK.Benötigen Sie ein nicht bearbeitbares Feld in POST-Daten, aber ModelForm lässt mich nicht
class Product(models.Model):
uuid = models.UUIDField(
primary_key=True,
default=uuid.uuid4,
editable=False)
Ich brauche ein paar andere Felder zu bearbeiten, um eine ModelForm
verwenden und müssen die UUID in den POST-Daten vorzulegen, um die Product
zu identifizieren. Im Moment bekomme ich:
django.core.exceptions.FieldError: 'uuid' cannot be specified for Product model form as it is a non-editable field
Offensichtlich konnte ich das Feld nicht editierbar machen, um schnell dies zu lösen ein mit ihm getan werden. Es scheint mir jedoch, dass die Verweigerung des Schreibzugriffs auf dieses Feld auf einer niedrigeren Logikebene erfolgen sollte als eine ModelForm
(d. H. Ich denke, dass eine Ausnahme ausgelöst werden sollte, wenn versucht wird, sie stattdessen zu bearbeiten). Ist es möglich, dies stattdessen zu tun?
Edit: hygienisiert Zurückverfolgungs
File "/webapps/myapp/urls.py", line 6, in <module>
from my_app import views
File "/webapps/myapp/views/__init__.py", line 2, in <module>
from .my_view import MyView
File "/webapps/myapp/views/my_view.py", line 12, in <module>
from my_app.forms import ProductForm
File "/webapps/myapp/forms.py", line 5, in <module>
class ProductForm(forms.ModelForm):
File "/webapps/myapp/lib/python3.5/site-packages/django/forms/models.py", line 242, in __new__
opts.field_classes)
File "/webapps/myapp/lib/python3.5/site-packages/django/forms/models.py", line 138, in fields_for_model
f.name, model.__name__)
django.core.exceptions.FieldError: 'uuid' cannot be specified for Product model form as it is a non-editable field
Und Formularcode:
class ProductForm(forms.ModelForm):
uuid = forms.UUIDField(required=False, widget=forms.HiddenInput())
Sie müssen den tatsächlichen Code zu erhalten, die ist Auslösen dieser Ausnahme und des vollständigen Tracebacks. –
Ok, ich habe den Formularcode und den Traceback hinzugefügt (um das Lesen zu erleichtern). – Escher
Ich verstehe nicht, warum Sie das Feld in der Form überhaupt wollen. Wie in vd1 gezeigt, benötigen Sie zum Aktualisieren einer vorhandenen Instanz, an die Sie die Instanz übergeben, keine ID. –