【发布时间】: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