Python详细信息:数组值必须以“开始”;{quot;或维度信息
我试图将字符串添加到ArrayField,但得到的是Python详细信息:数组值必须以“开始”;{quot;或维度信息,python,django,django-models,django-rest-framework,Python,Django,Django Models,Django Rest Framework,我试图将字符串添加到ArrayField,但得到的是详细信息:数组值必须以“{”或维度信息开头。错误 这就是模型看起来像更新凭证的方法,我试图将商户id添加到商户阵列字段 class CloverCredential(models.Model): tenant=models.OneToOneField('tenant.tenant',unique=True,on_delete=models.CASCADE) 令牌=EncryptedCharField(最大长度=255,null=True) sp
详细信息:数组值必须以“{”或维度信息开头。
错误
这就是模型看起来像更新凭证的方法,我试图将商户id添加到商户阵列字段
class CloverCredential(models.Model):
tenant=models.OneToOneField('tenant.tenant',unique=True,on_delete=models.CASCADE)
令牌=EncryptedCharField(最大长度=255,null=True)
spreedly\u receiver\u token=EncryptedCharField(最大长度=255,null=True)
merchants=ArrayField(models.CharField(max_length=200,blank=True),null=True)
def更新_凭证(自身、新_令牌、商户id):
self.token=新的\u令牌
self.merchants=merchant\u id
self.save()
这是im调用更新凭证和传递令牌以及商户id
类OAuthCallback(APIView):
def api_请求(自身、路径):
return requests.get(path).json()
def get(自我、请求、*args、**kwargs):
code=request.GET.GET('code','')
state=unsign_状态(request.GET.GET('state','')
商户id=request.GET.GET('merchant\u id','')
租户=获取对象或404(租户,主键=状态['tenant\u id'])
clover_凭证,created=CloverCredential.objects.get_或_create(tenant=tenant)
url=f'{settings.CLOVER\u url\u US}/oauth/token?客户端\u id={settings.CLOVER\u应用程序\u id}&客户端\u secret={settings.CLOVER\u应用程序\u secret}&代码={code}'
oauth_response=self.api_请求(url)
clover_凭证。更新_凭证(oauth_响应['access_token'],商户id)
返回重定向(状态['redirect'])
我还尝试将商户id附加到商户
self.merchants.append(商户id)
我犯了这个错误
AttributeError:'NoneType'对象没有属性“append”
问题
“商户”字段是一个列表,但默认为空 解决方案
因此,最好的办法是设置一个
default=list
错误解释
数组值必须以“{”或维度信息开头 出现这种情况是因为您将变量放入列表中,而不是执行此操作。
self.merchants=[merchant\u id,]
“NoneType”对象没有属性“append”
出现这种情况是因为您是无列表,而不是列表。请将无效列表设为默认值或按代码设置:
self.merchants=list()
谢谢,此解决方案帮助了我。