Opened 7 years ago
Closed 7 years ago
#30435 closed Bug (worksforme)
__iexact not working inside validator function.
| Reported by: | Diego Arturo Hernandez Fuentes | Owned by: | nobody |
|---|---|---|---|
| Component: | Database layer (models, ORM) | Version: | dev |
| Severity: | Normal | Keywords: | |
| Cc: | Triage Stage: | Unreviewed | |
| Has patch: | no | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description
I have my query into validation to find if exist a duplicate name in my model
def validate_name(self, value):
if not value:
raise serializers.ValidationError('Proporciona un valor, por favor.')
try:
exist_name = FundingSource.objects.filter(name__iexact=value) # here is the error __icontains is NOT WORKING
if len(exist_name) > 0:
raise serializers.ValidationError('Este nombre ya fue usado, por favor proporciona otro valor.') # I need display this message in my console to be sure that exists a duplicate
except Exception as e:
pass
else:
return value
I have in my model
Funding 1
Funding 2
Funding 3
Funding 4
Next, I tried to type funding 1 to disallow me to create that name, but, the queryset display me
<QuerySet []>
Then, create new one item in my table.
Funding 1
Funding 2
Funding 3
Funding 4
funding 1
So this is wrong, your iexact is bad,
so I need that Django developer team resolve this, now.
It's urgent, please. What is the best way to develop iexact or icontains.
Thanks
My django version is 2.1.5
Django rest framework version = 3.9.0
Change History (5)
comment:1 by , 7 years ago
| Summary: | __icontains NOT WORKING. URGENT!!!!!!!!!!!!!!!!!!!!!!! → __iexactNOT WORKING. URGENT!!!!!!!!!!!!!!!!!!!!!!! |
|---|
comment:2 by , 7 years ago
| Summary: | __iexactNOT WORKING. URGENT!!!!!!!!!!!!!!!!!!!!!!! → __iexact NOT WORKING. URGENT!!!!!!!!!!!!!!!!!!!!!!! |
|---|
comment:3 by , 7 years ago
comment:4 by , 7 years ago
| Summary: | __iexact NOT WORKING. URGENT!!!!!!!!!!!!!!!!!!!!!!! → __iexact not working inside validator function |
|---|
comment:5 by , 7 years ago
| Component: | Uncategorized → Database layer (models, ORM) |
|---|---|
| Resolution: | → worksforme |
| Status: | new → closed |
| Summary: | __iexact not working inside validator function → __iexact not working inside validator function. |
| Version: | 2.1 → master |
First of all please don't shout. Secondly __iexact works properly, an issue is in your own code. Tip from Ryan Govostes looks reasonable, but your code will not work properly on update. You should take into account instance etc. Nevertheless it is support issue so please use one of support channels.
You are raising your ValidationError inside a
try ... catchblock which catches the exception and then does nothing with it. This will prevent the ValidationError from escaping your validator.Does this work?
def validate_name(self, value): if not value: raise serializers.ValidationError('Proporciona un valor, por favor.') exist_name = FundingSource.objects.filter(name__iexact=value) if len(exist_name) > 0: raise serializers.ValidationError('Este nombre ya fue usado, por favor proporciona otro valor.')Please keep bug report titles simple.