繁体   English   中英

django.core.exceptions.FieldError:无法将关键字'timestamp'解析为字段

[英]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模型属性的那些(或其中任何关系)来查询数据库。

当我的第二个数据库中的一个列被删除时,我遇到了同样的错误。

您可以尝试重置迁移:

  1. 删除项目中的所有迁移文件。 浏览每个项目应用程序迁移文件夹( your_app / migrations / )并删除内部的所有内容,但init .py文件除外。
  2. 运行makemigrationsmigrate

不确定你的情况,但这解决了我的情况相同的错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM