【问题标题】:Django forms two fields with same same value one being unique with default value and other being hidden fieldDjango 形成两个具有相同值的字段,一个是唯一的,具有默认值,另一个是隐藏字段
【发布时间】:2018-07-26 20:57:06
【问题描述】:

我的模型有两个字段,一个是唯一的 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字段。我怎样才能做到这一点?

【问题讨论】:

  • 但是你的模型中没有filename
  • no 模型中没有文件名,我想将模型 uuid 字段的默认值分配给表单字段

标签: django django-forms


【解决方案1】:

您可以“修补__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__"

【讨论】:

  • 感谢回复,这个方法我已经试过了,但是表单类的self.fields中没有出现HiddenInput字段
  • @Harwee:等等,你用的是HiddenInput?那不是一个字段,那是一个小部件......
  • 啊,我犯了一个多么愚蠢的错误,感谢您解决了这个问题。
  • 你知道我是否可以用 drf 序列化程序做同样的方法吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-13
  • 2021-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多