首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >'AutoField‘对象没有属性'remote_field’

'AutoField‘对象没有属性'remote_field’
EN

Stack Overflow用户
提问于 2017-10-06 23:26:22
回答 1查看 2.2K关注 0票数 1

Django 1.8中出现了一个奇怪的错误:

代码语言:javascript
复制
'AutoField' object has no attribute 'remote_field'

我有一个模特,比如:

代码语言:javascript
复制
from django.db import models
from django.utils import timezone


class Event(models.Model):
    product_type = models.CharField(max_length=250, null=False, blank=False)
    received_time = models.DateTimeField(editable=False)
    source_json = models.TextField()
    event_id = models.CharField(max_length=250, null=False, blank=False)

    # https://stackoverflow.com/questions/1737017/django-auto-now-and-auto-now-add
    def save(self, *args, **kwargs):
        if not self.id:
            self.received_time = timezone.now()
        return super(Event, self).save(*args, **kwargs)

    @classmethod
    def event_id_is_already_saved(cls, event_id_in_question):
        items_found = cls.objects.filter(event_id=event_id_in_question)
        if items_found:
            return True
        return False

意见如下:

代码语言:javascript
复制
import json

from django.http import HttpResponse
from rest_framework import viewsets

from events.utils.elastic_db_utils import get_elastic_exact_search_from_query_dictionary
from events.serializers import EventSerializer
from events.models import Event


def list_events(request):
    all_events = Event.objects.all()
    serialized = [EventSerializer(event) for event in all_events]
    return HttpResponse(json.dumps(serialized))


class EventViewSet(viewsets.ModelViewSet):
    """
    API endpoint that allows users to be viewed or edited.
    """
    queryset = Event.objects.all().order_by('-received_time')
    serializer_class = EventSerializer

网址:

代码语言:javascript
复制
from django.conf.urls import url, include
from rest_framework import routers

from . import views

router = routers.DefaultRouter()
router.register(r'events', views.EventViewSet)


urlpatterns = [
    url(r"^$", views.search_elastic_db, name='search-elastic-db'),
    url(r"^events", views.list_events, name='list-events'),
    url(r'^api/', include(router.urls)),
]

无论是我的视图集,还是^events端点,都会得到相同的错误。您可以在shell中看到我的模型没有什么问题:

代码语言:javascript
复制
In [1]: from events.models import Event

In [2]: Event.objects.all()
Out[2]: [<Event: Event object>, <Event: Event object>, <Event: Event object>, <Event: Event object>, <Event: Event object>, <Event: Event object>, <Event: Event object>, <Event: Event object>, <Event: Event object>, <Event: Event object>, <Event: Event object>, <Event: Event object>, <Event: Event object>, <Event: Event object>, <Event: Event object>, <Event: Event object>, <Event: Event object>, <Event: Event object>, <Event: Event object>, <Event: Event object>]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-07 03:15:32

我认为您无法从您提供的代码中推断出确切的原因,但根据错误消息,您似乎正在其他地方使用为Django更新版本编写的代码--可能是在第三方库中。在Django v1.9中,remote_field属性被添加到Field中,正如注意到的在发布说明中。(这个属性显然是在1.8节中缺席。)

你的选择是:

  1. 将您的项目升级到最近的Django版本。
  2. 支持第三方库,将违规的Field更改为使用rel,并重写任何其他不兼容的代码。
  3. 将第三方库替换为另一个支持Django v1.8的库。

(我推荐第一个选项,因为Django版本之间的升级是有据可查。)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46615174

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档