我正在尝试用Django (v1.97,Python v2.7.12,djangorestframework v3.3.3)设置django-fmc来处理存储注册I和向设备发送通知。我正在跟踪他们提供的教程,但它似乎不起作用。
运行本地服务器和python manage.py fcm_urls时,会收到以下错误
...
File "C:\Work\Dev\LiveTracking\Api\app\views.py", line 50, in DeviceViewSet
queryset = Device.objects.all()
File "C:\Work\Dev\LiveTracking\Api\env\lib\site-packages\django\db\models\manager.py", line 277, in __get__
self.model._meta.swapped,
AttributeError: Manager isn't available; 'fcm.Device' has been swapped for 'app.MyDevice'目前,我不想向MyDevice模型添加额外的字段。我看遍了所有的地方,但无法修复这个错误。如果有人能对这一错误有所了解,我们将不胜感激。
下面是我的一些代码片段:
settings.py
INSTALLED_APPS = (
'fcm',
)
# Firebase Cloud Messaging Key
FCM_APIKEY = 'AIzaSyCaqHZIcaGDOpfTZUmAHEowsqD-fCtow6A'
# Location of device model
FCM_DEVICE_MODEL = 'app.MyDevice'serializers.py
from fcm.models import Device
class DeviceSerializer(serializers.ModelSerializer):
class Meta:
model = Device
fields = ('dev_id','reg_id','name','is_active')views.py
from rest_framework import viewsets
from fcm.models import Device
from fcm.serializers import DeviceSerializer
class DeviceViewSet(viewsets.ModelViewSet):
queryset = Device.objects.all()
serializer_class = DeviceSerializerurls.py
from rest_framework import routers
from fcm.views import DeviceViewSet
router = routers.DefaultRouter()
router.register(r'devices', DeviceViewSet)
urlpatterns = [
url(r'^v1/', include(router.urls)),
]发布于 2017-01-05 19:38:07
swappable是一个无证特征,实际上应该只用于自定义User模型。自定义用户模型的文档清楚地指出,一旦使用了自定义用户模型,直接引用contrib.auth.models.User将无法工作:
如果直接引用用户(例如,通过在外键中引用用户),您的代码将无法在已将AUTH_USER_MODEL设置更改为不同用户模型的项目中工作。
您可能想阅读本章的其余部分FWIW。
长话短说:正如Daniel提到的,您很可能希望使用自己的MyDevice模型,而不是默认的Device模型。如果django-fcm文档解决了这个问题,并最终向它提供一个修补程序。
https://stackoverflow.com/questions/41492173
复制相似问题