Skip to content

Commit 5611b36

Browse files
committed
Fixed form validation with Django - closes pgvector#21
1 parent 7682bb8 commit 5611b36

File tree

3 files changed

+18
-0
lines changed

3 files changed

+18
-0
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
## 0.2.0 (unreleased)
22

3+
- Fixed form validation with Django
34
- Dropped support for Python < 3.8
45

56
## 0.1.8 (2023-05-20)

pgvector/django/__init__.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,12 @@ def get_prep_value(self, value):
4242
def value_to_string(self, obj):
4343
return self.get_prep_value(self.value_from_object(obj))
4444

45+
def validate(self, value, model_instance):
46+
super().validate(value.tolist(), model_instance)
47+
48+
def run_validators(self, value):
49+
super().run_validators(value.tolist())
50+
4551

4652
class IvfflatIndex(PostgresIndex):
4753
suffix = 'ivfflat'

tests/test_django.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from django.core import serializers
44
from django.db import connection, migrations, models
55
from django.db.migrations.loader import MigrationLoader
6+
from django.forms import ModelForm
67
from math import sqrt
78
import numpy as np
89
import pgvector.django
@@ -79,6 +80,12 @@ def create_items():
7980
item.save()
8081

8182

83+
class ItemForm(ModelForm):
84+
class Meta:
85+
model = Item
86+
fields = ['embedding']
87+
88+
8289
class TestDjango:
8390
def setup_method(self, test_method):
8491
Item.objects.all().delete()
@@ -127,3 +134,7 @@ def test_serialization(self):
127134
get_model.return_value = Item
128135
for obj in serializers.deserialize(format, data):
129136
obj.save()
137+
138+
def test_form(self):
139+
form = ItemForm(data={'embedding': [1, 2, 3]})
140+
assert form.is_valid()

0 commit comments

Comments
 (0)