当尝试在新的Django 1.7中保存用户时,Django Rest Framework显示错误

blu*_*777 0 python django django-rest-framework

我可以通过版本1.6正常保存用户,但我决定使用这个新版本的Django创建一个新项目,并且所有代码都是相同的,但是当我尝试使用前端创建一个新用户(使用Restangular创建)时显示我一个错误.DRF API的形式显示相同的错误.它询问了我的详细信息,如date_joined和last_login:O没问题,我写了.但DRF显示:"在使用多对多关系之前,需要为字段"用户"设置一个值.

在终端工作完美只是与

from django.contrib.auth.models import User
u = User()
u.username="newuser"
u.save()
Run Code Online (Sandbox Code Playgroud)

我有多个模型,就像m2m关系一样,如:

class Inscription(models.Model):
    categoria = models.ForeignKey('app.Category')
    user = models.ForeignKey(User, related_name='inscriptions')
    signed_by = models.ForeignKey(User, related_name='inscription_signed_by')
    created_at  = models.DateTimeField(auto_now_add=True)
    udpated_at = models.DateTimeField(auto_now=True) 
    def __unicode__(self):
        return '%s - %s' % (self.categoria.nombre, self.user.first_name)
Run Code Online (Sandbox Code Playgroud)

但是这在上一个版本中工作正常,我不知道我做错了什么:(我使用DRF 2.4.3和Python 3.3.5.¿我怎样才能让DRF正常工作?非常感谢你!

编辑:我使用router.register(r'users',UserViewSet)这样使用它:

class UserViewSet(ModelViewSet):
    model = User
    write_only_fields = ('password',) 
    lookup_field = 'id'
Run Code Online (Sandbox Code Playgroud)

Kev*_*own 5

您遇到了Python 3和Django REST Framework 2.4 的已知错误.问题是多对多关系的行为getattr在Python 3中是不同的,并且在2.3.14中有一个变化打破了序列化程序.

你有两种方法来解决这个问题,但没有一个方法可以解决这个问题:

  • 将Django REST Framework降级到2.3.13.这将在更改之前将其恢复,并且可以轻松pip安装.
  • 升级到Django REST Framework 3.0.它还没有发布,但是如果你不能降级它就值得一试.