Procházet zdrojové kódy

Move selection field validation from admin form to model

Jeremy Stretch před 5 roky
rodič
revize
3d6baeaab0
2 změnil soubory, kde provedl 7 přidání a 9 odebrání
  1. 0 8
      netbox/extras/admin.py
  2. 7 1
      netbox/extras/models/customfields.py

+ 0 - 8
netbox/extras/admin.py

@@ -89,14 +89,6 @@ class CustomFieldForm(forms.ModelForm):
 
         order_content_types(self.fields['content_types'])
 
-    def clean(self):
-
-        # Validate selection choices
-        if self.cleaned_data['type'] == CustomFieldTypeChoices.TYPE_SELECT and len(self.cleaned_data['choices']) < 2:
-            raise forms.ValidationError({
-                'choices': 'Selection fields must specify at least two choices.'
-            })
-
 
 @admin.register(CustomField)
 class CustomFieldAdmin(admin.ModelAdmin):

+ 7 - 1
netbox/extras/models/customfields.py

@@ -170,7 +170,13 @@ class CustomField(models.Model):
         # Choices can be set only on selection fields
         if self.choices and self.type != CustomFieldTypeChoices.TYPE_SELECT:
             raise ValidationError({
-                'choices': "Choices may be set only for selection-type custom fields."
+                'choices': "Choices may be set only for custom selection fields."
+            })
+
+        # A selection field must have at least two choices defined
+        if self.type == CustomFieldTypeChoices.TYPE_SELECT and len(self.choices) < 2:
+            raise ValidationError({
+                'choices': "Selection fields must specify at least two choices."
             })
 
         # A selection field's default (if any) must be present in its available choices