Как автоматически повторно использовать поле модели по умолчанию, когда такое поле (его имя) не является частью данных, передаваемых конструктору модели-формы?
app.models.py:
from django.db import models
from .custom_fields import HTTPURLField
from .function_validators import validate_md5
class Snapshot(models.Model):
url = HTTPURLField(max_length=1999)
content_hash = models.CharField(max_length=32, default='00000000000000000000000000000000',
validators=[validate_md5])
timestamp = models.DateTimeField(auto_now=True)
app.forms.py:
from django import forms
from .models import Snapshot
class SnapshotModelForm(forms.ModelForm):
class Meta:
model = Snapshot
fields = ('url', 'content_hash')
app.views.py:
from .forms import SnapshotModelForm
def index(request):
snapshot_form = SnapshotModelForm(data={'url': ' https://stackoverflow.com/ '}) # notice the spaces (which gets trimmed automatically during cleaning or where?)
if snapshot_form.is_valid():
model_instance = snapshot_form.save()
Я хочу, чтобы мой экземпляр SnapshotModelForm
(snapshot_form
) был заполнен также 'content_hash'
и его значением по умолчанию (заданным в Snapshot
определении класса django.db.models.fields.CharField
), когда оно не подается через POST данные или другие виды (входных) данных, используемых конструктором ModelForm
, т.е. избежать необходимости как-то подавать его конструктору.
Я предполагаю, что класс django.forms.fields.Field
или его подклассы (в данном случае django.forms.fields.CharField
) могут быть вовлечены в это дело!?