Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django模型获得;ValueError:以10为基数的int()的文本无效;调用objects.update\u或创建后_Python_Mysql_Django_Python 3.x_Django Models - Fatal编程技术网

Python Django模型获得;ValueError:以10为基数的int()的文本无效;调用objects.update\u或创建后

Python Django模型获得;ValueError:以10为基数的int()的文本无效;调用objects.update\u或创建后,python,mysql,django,python-3.x,django-models,Python,Mysql,Django,Python 3.x,Django Models,在下面的模型上使用Django的update\u或\u create方法时遇到问题。我得到这个错误: ValueError:基数为10的int()的文本无效:“” 错误似乎总是在update\u或

在下面的模型上使用Django的
update\u或\u create
方法时遇到问题。我得到这个错误:

ValueError:基数为10的int()的文本无效:“”

错误似乎总是在
update\u或
的最后一行抛出,因为当我向语句中添加
verified=False
(默认值为False)时,错误会追溯到
verified=False
的行,而不是下面显示的行

我的模型:

class Addresses(models.Model):
    customer = models.ForeignKey('Customers', on_delete=models.CASCADE)
    address_name = models.CharField(max_length=45)
    company = models.CharField(max_length=45)
    street1 = models.CharField(max_length=60)
    street2 = models.CharField(max_length=30, blank=True, null=True)
    street3 = models.CharField(max_length=30, blank=True, null=True)
    city = models.CharField(max_length=45)
    state = models.CharField(max_length=45)
    zip = models.IntegerField()
    country = models.CharField(default='US', max_length=45)
    phone = models.IntegerField(blank=True, null=True)
    residential = models.BooleanField(default=True)
    verified = models.BooleanField(default=False)

class Customers(models.Model):
    customer_name = models.CharField(max_length=75)
    email = models.CharField(max_length=60, blank=True, null=True)
    phone = models.IntegerField(blank=True, null=True)
    ss_customer_id = models.IntegerField(blank=True, null=True, unique=True)
职能:

def addAddress(self, address, customer_id):
    if address['name'] is not None and address['street1'] is not None and address['city'] is not None:
        if address['state'] is not None and address['postalCode'] is not None:

            address, created = Addresses.objects.update_or_create(
                address_name=address['name'],
                company=address['company'],
                street1=address['street1'],
                street2=address['street2'],
                street3=address['street3'],
                city=address['city'],
                state=address['state'],
                country=address['country'],
                phone=address['phone'],
                customer=customer_id #error thrown here
            )

            address.save()
            return address
    return False
数据:

address = {
    'name': 'Johnny Appleseed',
    'company': 'Apple Inc',
    'street1': '456 Street',
    'street2': 'APT 12',
    'street3': None,
    'city': 'City',
    'state': 'LA',
    'postalCode': '90000',
    'country': 'US',
    'phone': '4444444444',
}
customer_id = 2 #this is a valid primaryKey

self.addAddress(address, customer_id)
这是完整的回溯:

Traceback (most recent call last):
  File "/Users/jane/Code/dbmu-env/env/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/Users/jane/Code/dbmu-env/env/lib/python3.7/site-packages/django/core/handlers/base.py", line 126, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/Users/jane/Code/dbmu-env/env/lib/python3.7/site-packages/django/core/handlers/base.py", line 124, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/Users/jane/Code/dbmu-env/env/lib/python3.7/site-packages/django/views/generic/base.py", line 68, in view
    return self.dispatch(request, *args, **kwargs)
  File "/Users/jane/Code/dbmu-env/env/lib/python3.7/site-packages/django/utils/decorators.py", line 45, in _wrapper
    return bound_method(*args, **kwargs)
  File "/Users/jane/Code/dbmu-env/env/lib/python3.7/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view
    return view_func(*args, **kwargs)
  File "/Users/jane/Code/dbmu-env/env/lib/python3.7/site-packages/django/views/generic/base.py", line 88, in dispatch
    return handler(request, *args, **kwargs)
  File "/Users/jane/Code/dbmu-env/dbmu/webhooks.py", line 39, in post
    self.process_orders(orders)
  File "/Users/jane/Code/dbmu-env/dbmu/webhooks.py", line 57, in process_orders
    shipping = self.addAddress(order['shipTo'], customer_id)
  File "/Users/jane/Code/dbmu-env/dbmu/webhooks.py", line 88, in addAddress
    verified=False,
  File "/Users/jane/Code/dbmu-env/env/lib/python3.7/site-packages/django/db/models/manager.py", line 82, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/Users/jane/Code/dbmu-env/env/lib/python3.7/site-packages/django/db/models/query.py", line 502, in update_or_create
    obj = self.select_for_update().get(**lookup)
  File "/Users/jane/Code/dbmu-env/env/lib/python3.7/site-packages/django/db/models/query.py", line 390, in get
    clone = self.filter(*args, **kwargs)
  File "/Users/jane/Code/dbmu-env/env/lib/python3.7/site-packages/django/db/models/query.py", line 844, in filter
    return self._filter_or_exclude(False, *args, **kwargs)
  File "/Users/jane/Code/dbmu-env/env/lib/python3.7/site-packages/django/db/models/query.py", line 862, in _filter_or_exclude
    clone.query.add_q(Q(*args, **kwargs))
  File "/Users/jane/Code/dbmu-env/env/lib/python3.7/site-packages/django/db/models/sql/query.py", line 1263, in add_q
    clause, _ = self._add_q(q_object, self.used_aliases)
  File "/Users/jane/Code/dbmu-env/env/lib/python3.7/site-packages/django/db/models/sql/query.py", line 1287, in _add_q
    split_subq=split_subq,
  File "/Users/jane/Code/dbmu-env/env/lib/python3.7/site-packages/django/db/models/sql/query.py", line 1225, in build_filter
    condition = self.build_lookup(lookups, col, value)
  File "/Users/jane/Code/dbmu-env/env/lib/python3.7/site-packages/django/db/models/sql/query.py", line 1096, in build_lookup
    lookup = lookup_class(lhs, rhs)
  File "/Users/jane/Code/dbmu-env/env/lib/python3.7/site-packages/django/db/models/lookups.py", line 20, in __init__
    self.rhs = self.get_prep_lookup()
  File "/Users/jane/Code/dbmu-env/env/lib/python3.7/site-packages/django/db/models/lookups.py", line 70, in get_prep_lookup
    return self.lhs.output_field.get_prep_value(self.rhs)
  File "/Users/jane/Code/dbmu-env/env/lib/python3.7/site-packages/django/db/models/fields/__init__.py", line 1807, in get_prep_value
    return int(value)
ValueError: invalid literal for int() with base 10: ''
更新 我尝试了这个,但仍然得到相同的错误:

def addAddress(self, address, customer_id):
    ...
    customer = Customers.objects.get(pk=customer_id)
    print(customer) #Customers object (2)

    address, created = Addresses.objects.update_or_create(
    ...

    customer=customer,
    )

我做错了什么?任何建议都将不胜感激:)

地址。客户是一个对象,而不仅仅是一个id。为了填充它,您需要从数据库中检索它。因此:

 Customer.objects.get(customer_id)

希望这能有所帮助。

多亏了@hd1,我才明白这一点。我的
地址。对象。更新或创建

  • 我传递的是客户主键,而不是客户对象(hd1的答案)

  • 我没有为必填的
    zip
    字段设置值

  • 电话号码列超出了其值的最大长度

由于某种原因,所有这些都导致我的问题中的错误被抛出


在我修复了所有这些问题后,我不再出现错误。

谢谢你的回答,但我尝试了,但仍然出现相同的错误:(用你所做的更新问题中的代码,我会解决的。我解决了。谢谢你的帮助!