Django 字段';门';应为一个数字,但得到''; 错误: models.py views.py
使用:Django3.1.7、Python3.6.9、Ajax、Postgresql和DjangoREST框架。我试着做dinamics下拉过滤器。这不是我申请的全部代码。我认为错误就在这里<谢谢你的帮助 您的字段Django 字段';门';应为一个数字,但得到''; 错误: models.py views.py,django,postgresql,django-models,django-rest-framework,django-views,Django,Postgresql,Django Models,Django Rest Framework,Django Views,使用:Django3.1.7、Python3.6.9、Ajax、Postgresql和DjangoREST框架。我试着做dinamics下拉过滤器。这不是我申请的全部代码。我认为错误就在这里
doors
被定义为IntegerField
,其中null=False
和blank=False
(默认情况下)
因此,以下代码行就是问题所在(为了可读性增加了中断):
.exclude(doors\uu exact='')
抛出错误,因为整型字段
不能包含字符串,但您正在检查它是否等于空字符串'
。这是不允许的
只要不在模型的doors
字段定义中设置null=True
,则不需要.exclude(doors\uu isnull=True)
Traceback (most recent call last):
The above exception (invalid literal for int() with base 10: '') was the direct cause of the following exception:
File "/home/andres/.local/lib/python3.6/site-packages/django/core/handlers/exception.py", line 47, in inner
response = get_response(request)
File "/home/andres/.local/lib/python3.6/site-packages/django/core/handlers/base.py", line 181, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "./wallacar_app/views.py", line 124, in getDoors
doors = Coche.objects.exclude(doors__isnull=True).exclude(doors__exact='').order_by('doors').values_list('doors').distinct()
File "/home/andres/.local/lib/python3.6/site-packages/django/db/models/query.py", line 949, in exclude
return self._filter_or_exclude(True, args, kwargs)
File "/home/andres/.local/lib/python3.6/site-packages/django/db/models/query.py", line 961, in _filter_or_exclude
clone._filter_or_exclude_inplace(negate, args, kwargs)
File "/home/andres/.local/lib/python3.6/site-packages/django/db/models/query.py", line 966, in _filter_or_exclude_inplace
self._query.add_q(~Q(*args, **kwargs))
File "/home/andres/.local/lib/python3.6/site-packages/django/db/models/sql/query.py", line 1396, in add_q
clause, _ = self._add_q(q_object, self.used_aliases)
File "/home/andres/.local/lib/python3.6/site-packages/django/db/models/sql/query.py", line 1418, in _add_q
split_subq=split_subq, check_filterable=check_filterable,
File "/home/andres/.local/lib/python3.6/site-packages/django/db/models/sql/query.py", line 1350, in build_filter
condition = self.build_lookup(lookups, col, value)
File "/home/andres/.local/lib/python3.6/site-packages/django/db/models/sql/query.py", line 1196, in build_lookup
lookup = lookup_class(lhs, rhs)
File "/home/andres/.local/lib/python3.6/site-packages/django/db/models/lookups.py", line 25, in __init__
self.rhs = self.get_prep_lookup()
File "/home/andres/.local/lib/python3.6/site-packages/django/db/models/fields/related_lookups.py", line 117, in get_prep_lookup
self.rhs = target_field.get_prep_value(self.rhs)
File "/home/andres/.local/lib/python3.6/site-packages/django/db/models/fields/__init__.py", line 1827, in get_prep_value
) from e
Exception Type: ValueError at /wallacar_app/ajax/doors/
Exception Value: Field 'doors' expected a number but got ''.
class Coche(models.Model):
doors = models.ForeignKey('CocheDoors', on_delete=models.CASCADE)
class CocheDoors(models.Model):
doors = models.IntegerField(verbose_name="Puertas", primary_key=True, validators=[RegexValidator(regex='^[0-9]{1}$',message="Las puertas solo pueden tener una cifra")])
def __str__(self):
return str(self.doors)
def getDoors(request):
if request.method == "GET" and request.is_ajax():
doors = Coche.objects.exclude(doors__isnull=True).exclude(doors__exact='').order_by('doors').values_list('doors').distinct()
doors = [i[0] for i in list(doors)]
data = {'doors':doors}
return JsonResponse(data,status=200)
doors = Coche.objects \
.exclude(doors__isnull=True) \
.exclude(doors__exact='') \
.order_by('doors') \
.values_list('doors').distinct()