Мне нужно проверить в поле модели список доступных элементов, прежде чем я сохраню их в базе данных.
models.py
class Vendors(models.Model):
COUNTRY_CHOICES = tuple(countries)
...
country = models.CharField(max_length=45, choices=COUNTRY_CHOICES)
...
класс для сохранения моделей
class CsvToDatabase(APIView):
def post(self, request, format=None):
data = request.data
for key, vendor in data.items():
Vendors(
...,
country=vendor['Country'],
...,
).save()
return Response({'received data': request.data,
'message': 'Vendors from vendors_list were successfully added to the database'})
Для проверки я добавил clean метод к моделям
def clean(self):
if self.country not in [x[1] for x in countries]:
raise ValidationError(detail="Country name does not match to the country list ")
Но это не работает
Следующий шаг Я добавил тот же код к методу save
def save(self):
if self.country not in [x[1] for x in countries]:
raise ValidationError(detail="Country name does not match to the country list ")
И это работает, но я прочитал, что с использованием проверки в метод сохранения неверен. И правильный способ использования - clean , почему в моем случае это не работает?