【发布时间】:2018-02-22 19:34:24
【问题描述】:
我有一个简单的函数,如下所示:
parent_key = SeoKeys.objects.get(view_id=view_id, key_nbr=key_nbr)
if parent_key.status != 'active':
parent_key.status = status
parent_key.save()
metrics, created = SeoMetrics.objects.get_or_create(
seo_url = url_sent,
date = date,
parent_key = parent_key,
defaults = {
'parent_key':parent_key,
'seo_url': url_sent,
'url_found':url_found,
'position':position,
}
)
现在理论上这应该可以工作,但是我收到以下错误:
ValueError: Cannot assign "(<SeoKeys: SeoKeys object>,)": "SeoMetrics.parent_key" must be a "SeoKeys" instance.
这是因为它是一个元组。如果我这样做 'parent_key':parent_key[0] 它会很好地保存它。然而,这似乎是一个相当黑客的解决方案,我想了解为什么会发生这种情况。有什么想法吗?
我的模型看起来像这样:
class SeoMetrics(models.Model):
parent_key = models.ForeignKey('SeoKeys', on_delete=models.CASCADE)
编辑: 添加了完整的错误:
Internal Server Error: /hook/
Traceback (most recent call last):
File "/Users/Costantin/GDrive/Analytic.me/dev/venv/lib/python3.5/site-packages/django/core/handlers/exception.py", line 41, in inner
response = get_response(request)
File "/Users/Costantin/GDrive/Analytic.me/dev/venv/lib/python3.5/site-packages/django/core/handlers/base.py", line 187, in _get_response
response = self.process_exception_by_middleware(e, request)
File "/Users/Costantin/GDrive/Analytic.me/dev/venv/lib/python3.5/site-packages/django/core/handlers/base.py", line 185, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/Users/Costantin/GDrive/Analytic.me/dev/venv/lib/python3.5/site-packages/django/views/decorators/csrf.py", line 58, in wrapped_view
return view_func(*args, **kwargs)
File "/Users/Costantin/GDrive/Analytic.me/dev/backend/apps/seo_app/views.py", line 152, in webhook
metrics.parent_key = parent,
File "/Users/Costantin/GDrive/Analytic.me/dev/venv/lib/python3.5/site-packages/django/db/models/fields/related_descriptors.py", line 216, in __set__
self.field.remote_field.model._meta.object_name,
ValueError: Cannot assign "(<SeoKeys: SeoKeys object>,)": "SeoMetrics.parent_key" must be a "SeoKeys" instance.
【问题讨论】:
-
请使用回溯发布整个错误消息。此外,您不必在
defaults中重复parent_key和seo_url,因为您已经将它们传递为kwargs。 -
@Selcuk 我添加了完整的错误。感谢
kwargs我不知道它们会自动添加,但确实有道理。
标签: django postgresql python-3.x