mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2025-08-14 00:26:21 +00:00
Feature: select custom field type (#7167)
This commit is contained in:
@@ -808,6 +808,7 @@ class CustomField(models.Model):
|
||||
FLOAT = ("float", _("Float"))
|
||||
MONETARY = ("monetary", _("Monetary"))
|
||||
DOCUMENTLINK = ("documentlink", _("Document Link"))
|
||||
SELECT = ("select", _("Select"))
|
||||
|
||||
created = models.DateTimeField(
|
||||
_("created"),
|
||||
@@ -825,6 +826,15 @@ class CustomField(models.Model):
|
||||
editable=False,
|
||||
)
|
||||
|
||||
extra_data = models.JSONField(
|
||||
_("extra data"),
|
||||
null=True,
|
||||
blank=True,
|
||||
help_text=_(
|
||||
"Extra data for the custom field, such as select options",
|
||||
),
|
||||
)
|
||||
|
||||
class Meta:
|
||||
ordering = ("created",)
|
||||
verbose_name = _("custom field")
|
||||
@@ -888,6 +898,8 @@ class CustomFieldInstance(models.Model):
|
||||
|
||||
value_document_ids = models.JSONField(null=True)
|
||||
|
||||
value_select = models.PositiveSmallIntegerField(null=True)
|
||||
|
||||
class Meta:
|
||||
ordering = ("created",)
|
||||
verbose_name = _("custom field instance")
|
||||
@@ -900,7 +912,12 @@ class CustomFieldInstance(models.Model):
|
||||
]
|
||||
|
||||
def __str__(self) -> str:
|
||||
return str(self.field.name) + f" : {self.value}"
|
||||
value = (
|
||||
self.field.extra_data["select_options"][self.value_select]
|
||||
if self.field.data_type == CustomField.FieldDataType.SELECT
|
||||
else self.value
|
||||
)
|
||||
return str(self.field.name) + f" : {value}"
|
||||
|
||||
@property
|
||||
def value(self):
|
||||
@@ -924,6 +941,8 @@ class CustomFieldInstance(models.Model):
|
||||
return self.value_monetary
|
||||
elif self.field.data_type == CustomField.FieldDataType.DOCUMENTLINK:
|
||||
return self.value_document_ids
|
||||
elif self.field.data_type == CustomField.FieldDataType.SELECT:
|
||||
return self.value_select
|
||||
raise NotImplementedError(self.field.data_type)
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user