Как автоматически повторно использовать поле модели по умолчанию, когда такое поле (его имя) не является частью данных, передаваемых конструктору модели-формы?

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) могут быть вовлечены в это дело!?

Вернуться на верх