Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.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电话号码字段错误_Python_Django_Django Managers - Fatal编程技术网

Python 获取或创建方法上的django电话号码字段错误

Python 获取或创建方法上的django电话号码字段错误,python,django,django-managers,Python,Django,Django Managers,我在Django模型的get_或_create方法上遇到错误,该方法包含PhoneNumberField(Django phonenumber field==1.3.0)字段 它以前工作得很好,因此我尝试了几个较旧的django phonenumber field(1.2.0、1.1.0、1.0.0)版本,但结果都是一样的 正在尝试做的事 TestModel.objects.get\u或\u create(name='testname') 型号.py from django.utils.tran

我在Django模型的get_或_create方法上遇到错误,该方法包含PhoneNumberField(Django phonenumber field==1.3.0)字段

它以前工作得很好,因此我尝试了几个较旧的django phonenumber field(1.2.0、1.1.0、1.0.0)版本,但结果都是一样的

正在尝试做的事

TestModel.objects.get\u或\u create(name='testname')

型号.py

from django.utils.translation import get_language, ugettext_lazy as _
from phonenumber_field.modelfields import PhoneNumberField
from django.db import models

class TestModel(models.Model):
    name = models.CharField(max_length=20, blank=True,
                            null=True)
    phone = PhoneNumberField(
        _('Phone'), blank=True, unique=True, null=True,
          help_text=_('Enter phone number...')
    )
回溯

<ipython-input-3-03bfe9e47b71> in <module>()
----> 1 TestModel.objects.get_or_create(name='test')

/usr/local/lib/python3.5/site-packages/django/db/models/manager.py in manager_method(self, *args, **kwargs)
     83         def create_method(name, method):
     84             def manager_method(self, *args, **kwargs):
---> 85                 return getattr(self.get_queryset(), name)(*args, **kwargs)
     86             manager_method.__name__ = method.__name__
     87             manager_method.__doc__ = method.__doc__

/usr/local/lib/python3.5/site-packages/django/db/models/query.py in get_or_create(self, defaults, **kwargs)
    457         specifying whether an object was created.
    458         """
--> 459         lookup, params = self._extract_model_params(defaults, **kwargs)
    460         # The get() needs to be targeted at the write database in order
    461         # to avoid potential transaction consistency problems.

/usr/local/lib/python3.5/site-packages/django/db/models/query.py in _extract_model_params(self, defaults, **kwargs)
    519         params = {k: v for k, v in kwargs.items() if LOOKUP_SEP not in k}
    520         params.update(defaults)
--> 521         property_names = self.model._meta._property_names
    522         invalid_params = []
    523         for param in params:

/usr/local/lib/python3.5/site-packages/django/utils/functional.py in __get__(self, instance, cls)
     33         if instance is None:
     34             return self
---> 35         res = instance.__dict__[self.name] = self.func(instance)
     36         return res
     37 

/usr/local/lib/python3.5/site-packages/django/db/models/options.py in _property_names(self)
    885         return frozenset({
    886             attr for attr in
--> 887             dir(self.model) if isinstance(getattr(self.model, attr), property)
    888         })

/usr/local/lib/python3.5/site-packages/django/db/models/options.py in <setcomp>(.0)
    885         return frozenset({
    886             attr for attr in
--> 887             dir(self.model) if isinstance(getattr(self.model, attr), property)
    888         })

/usr/local/lib/python3.5/site-packages/phonenumber_field/modelfields.py in __get__(self, instance, owner)
     31             raise AttributeError(
     32                 "The '%s' attribute can only be accessed from %s instances."
---> 33                 % (self.field.name, owner.__name__))
     34         return instance.__dict__[self.field.name]
     35 

AttributeError: The 'phone' attribute can only be accessed from TestModel instances.
() ---->1 TestModel.objects.get\u或\u create(name='test') /manager_方法中的usr/local/lib/python3.5/site-packages/django/db/models/manager.py(self,*args,**kwargs) 83定义创建方法(名称、方法): 84 def管理器_方法(self、*args、**kwargs): --->85返回getattr(self.get_queryset(),name)(*args,**kwargs) 86管理者\方法。\名称\方法。\名称__ 87管理者方法。文件=方法。文件__ /get_或_create中的usr/local/lib/python3.5/site-packages/django/db/models/query.py(self,默认值,**kwargs) 457指定是否创建了对象。 458 """ -->459查找,参数=self._extract_model_params(默认值,**kwargs) 460#get()需要以写数据库为目标,以便 461#避免潜在的事务一致性问题。 /usr/local/lib/python3.5/site-packages/django/db/models/query.py in_extract_model_params(self,默认值,**kwargs) 519参数={k:v代表k,v在kwargs.items()中,如果查找不在k} 520参数更新(默认值) -->521属性\u名称=self.model.\u meta.\u属性\u名称 522无效的_参数=[] 523对于参数中的参数: /usr/local/lib/python3.5/site-packages/django/utils/functional.py in\uuuuuu get\uuuuu(self、instance、cls) 33如果实例为无: 34回归自我 --->35 res=instance.\uu dict\uu[self.name]=self.func(实例) 36返回res 37 /usr/local/lib/python3.5/site-packages/django/db/models/options.py in_property_names(self) 885回程防冻套({ 886 attr用于attr in -->887 dir(self.model)如果isinstance(getattr(self.model,attr),属性) 888 }) /usr/local/lib/python3.5/site-packages/django/db/models/options.py in(.0) 885回程防冻套({ 886 attr用于attr in -->887 dir(self.model)如果isinstance(getattr(self.model,attr),属性) 888 }) /usr/local/lib/python3.5/site-packages/phonenumber\u field/modelfields.py in\uuuuuuu get\uuuuuu(self、instance、owner) 31提高属性错误( 32“只能从%s实例访问'%s'属性。” --->33%(self.field.name,owner.\uuuu name\uuuuu)) 34返回实例。\u dict\u[self.field.name] 35 AttributeError:“phone”属性只能从TestModel实例访问。
Django版本1.11.2出现错误。Django 1.11.1工作正常。

第一个参数是什么在
phone
字段中应该是?您没有将其分配给
label
help_text
之类的属性;它只是自己存在。您可以粘贴django版本吗?django版本1.11.2。生产正常,并且它使用django 1.11.1,我将在本地(“phone”)上测试它是字段的名称,我只是尝试在没有它的情况下获取_或_create,结果是相同的,可能它与红十字会在django=1.11,python=3.5附近有一些共同点(我不是在问而不是在回答)