“AutoField”对象没有“remote_field”属性

2024-04-29 10:21:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Django 1.8中遇到一个奇怪的错误:

'AutoField' object has no attribute 'remote_field'

我有一个模型像:

^{pr2}$

观点如下:

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

网址:

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端点都不起作用,都会得到相同的错误。我的模型在外壳中没有任何问题:

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>]

Tags: fromimporteventurldbsearchobjectsobject
1条回答
网友
1楼 · 发布于 2024-04-29 10:21:57

我不认为您可以从您提供的代码中推断出确切的原因,但是根据错误消息,您可能正在其他地方使用代码,可能是在为Django的新版本编写的第三方库中。如前所述,remote_field属性被添加到djangov1.9中的Field中。(该属性显然是absent in v1.8。)

您的选择是:

  1. 将您的项目升级到更新的Django版本。在
  2. 反向导入第三方库,将有问题的Field更改为使用rel,并重写任何其他不兼容的代码。在
  3. 将第三方库替换为支持Django v1.8的其他库。在

(我推荐第一个选项,因为在Django版本之间升级是well-documented

相关问题 更多 >