【问题标题】:How do I get UUID FIELD value in Django ModelFORM?如何在 Django ModelFORM 中获取 UUID FIELD 值?
【发布时间】:2022-01-11 08:15:38
【问题描述】:

我正在做一些相当简单的事情...我正在使用我的 POSTRGRESQL 数据库中的 UUID 字段创建具有唯一标识符的记录。它工作正常。我正在尝试使用该值并在用户更新记录时进行比较。但是,即使该值在数据库中,当我尝试通过 CLEAN 中的 ModelFORM 获取它时,它也显示为 NONE。我猜有一种特殊的方法可以获得这个值,但我不知道它是什么。我试图以此作为参考...... https://stackoverflow.com/questions/54914961/django-form-with-a-modelchoicefield-on-a-uuid-do-not-show-its-content-已清理,但我无法解决。

我的模型...

class Model(models.Model):


unique_identifier = models.UUIDField(primary_key=False, default=uuid.uuid4, editable=False)

我的表格...

class FORM(forms.ModelForm):

class Meta:
    model = Model

def clean(self):
    cleaned_data = super(UpdateSavedNewProcedureForm, self).clean()  
    unique_identifier = cleaned_data.get('unique_identifier')
    print(unique_identifier) 

当我打印 unique_identifier 时,它返回为 NONE,即使我可以在数据库中看到该值。如果我将值存储为 CHARFIELD,我可以获得该值......但我试图避免重复该字段只是为了便于阅读。我确定有一种特殊的方法可以获得这个值,但我现在很难过。

提前感谢您的任何想法。

【问题讨论】:

  • 该字段不可编辑,因此与表单无关。是模型会生成一个随机值,并进行相应的数据库查询。
  • 您可能可以使用self.instance.unique_identifier 检索 UUID,但以(模型)形式执行此操作没有任何意义。
  • @WillemVanOnsem 非常感谢!!!!!!!成功了!
  • 您介意更新一下您是如何实现答案的吗?

标签: postgresql django-models django-views django-forms django-templates


【解决方案1】:

感谢@Willem Van Onsem,我的最终答案

我的模型...

class Model(models.Model):

unique_identifier = models.UUIDField(primary_key=False, default=uuid.uuid4, editable=False)

我的表格...

class FORM(forms.ModelForm):

class Meta:
    model = Model

def clean(self):
    cleaned_data = super(UpdateSavedNewProcedureForm, self).clean()  
    unique_identifier = self.instance.unique_identifier        

    If unique_identifier:
        Do Something Cool.....

【讨论】:

  • 非常感谢史蒂夫。
  • @Elias Prado 不客气!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-26
  • 2022-06-11
  • 2018-05-11
  • 2018-01-18
  • 2011-04-19
  • 2010-10-18
  • 1970-01-01
相关资源
最近更新 更多