首页 > 解决方案 > Django 形成两个具有相同值的字段,一个是唯一的,具有默认值,另一个是隐藏字段

问题描述

我有一个模型有两个字段一个唯一的 uuid 字段和另一个 urlfield

class Image(models.Model):
    url = models.URLField()
    uuid = models.UUIDField(default=uuid4,unique=True)

我创建了一个 django 模型表单

class ImageUploadForm(forms.ModelForm):
    filename = forms.HiddenInput()

    class Meta:
        model = Image
        fields = "__all__"

在formview uuid字段将自动设置一个唯一的uuid,我想设置具有相同uuid的文件名,默认情况下自动设置为uuid字段。我怎样才能做到这一点?

标签: djangodjango-forms

解决方案


您可以“修补”该__init__函数,并.initial为给定字段设置一个值,例如:

class ImageUploadForm(forms.ModelForm):
    filename = forms.CharField(widget=forms.HiddenInput())

    def __init__(self, *args, **kwargs):
        super(ImageUploadForm, self).__init__(*args, **kwargs)
        self.fields['filename'].initial = self.instance.uuid

    class Meta:
        model = Image
        fields = "__all__"

推荐阅读