[英]raise FieldError("Cannot resolve keyword '%s' into field. " django.core.exceptions.FieldError: Cannot resolve keyword
[英]django.core.exceptions.FieldError: Cannot resolve keyword 'timestamp' into field
欢迎朋友,
不幸的是我有FieldError。 请帮忙
环境:
Django Version: 1.10.6
Python Version: 3.5.2
utils.py
import datetime
from django.utils import timezone
from django.contrib.contenttypes.models import ContentType
from .models import Action
def create_action(user, verb, target=None):
now = timezone.now()
last_minute = now - datetime.timedelta(seconds=60)
similar_actions = Action.objects.filter(user_id=user.id, verb=verb, timestamp__gte=last_minute)
if target:
target_ct = ContentType.objects.get_for_model(target)
similar_actions = similar_actions.filter(
target_ct=target_ct,
target_id=target.id)
if not similar_actions:
# Nie znaleziono żadnych akcji.
action = Action(user=user, verb=verb, target=target)
action.save()
return True
return False
models.py
from django.db import models
from django.contrib.auth.models import User
from django.contrib.contenttypes.models import ContentType
from django.contrib.contenttypes.fields import GenericForeignKey
class Action(models.Model):
user = models.ForeignKey(User,
related_name='actions',
db_index=True)
verb = models.CharField(max_length=255)
target_ct = models.ForeignKey(ContentType,
blank=True,
null=True,
related_name='target_obj')
target_id = models.PositiveIntegerField(null=True,
blank=True,
db_index=True)
target = GenericForeignKey('target_ct', 'target_id')
created = models.DateTimeField(auto_now_add=True,
db_index=True)
class Meta:
ordering = ('-created',)
我从Django Shell收到了这个错误回溯:
django.core.exceptions.FieldError: Cannot resolve keyword 'timestamp'
into field. Choices are: created, id, target, target_ct,
target_ct_id, target_id, user, user_id, verb
[23/Mar/2017 17:20:46] "POST /account/users/follow/ HTTP/1.1" 500 18933
我从浏览器控制台收到此错误:
POST http://127.0.0.1:8000/account/users/follow/ 500 (Internal Server Error)
有人应对这个吗?
有人对此有任何建议吗?
从错误中它应该是这样的:
similar_actions = Action.objects.filter(created__gte=last_minute, user_id=user.id, verb=verb)
您正在查询不存在的Action
模型的timestamp
属性。 可用的选择是:
created, id, target, target_ct, target_ct_id, target_id, user, user_id, verb
因此,您应该根据作为Action
模型属性的那些(或其中任何关系)来查询数据库。
当我的第二个数据库中的一个列被删除时,我遇到了同样的错误。
您可以尝试重置迁移:
makemigrations
并migrate
。 不确定你的情况,但这解决了我的情况相同的错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.