我可以通过版本1.6保存用户,但我决定使用这个新版本的Django创建一个新项目,并且所有代码都是相同的,但是当我尝试使用前端创建一个新用户时(使用Restangular创建) )告诉我一个错误。 DRF API的形式显示相同的错误。它询问了我的详细信息,如date_joined和last_login:O没问题,我写了。但DRF显示: “在使用多对多关系之前,需要为字段”user“设置一个值。
在终端中完美搭配
from django.contrib.auth.models import User
u = User()
u.username="newuser"
u.save()
我有多个像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)
但这在上一个版本中工作正常,我不知道我做错了什么:( 我使用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'
答案 0 :(得分:5)
您正在使用Python 3和Django REST Framework 2.4运行known bug。问题是多对多关系的行为和getattr
在Python 3中是不同的,并且在2.3.14中有一个变化打破了序列化器。
你有两种方法可以解决这个问题,但没有一个方法可以解决这个问题:
pip
可安装。