Django 如何使用新创建的对象?

Django 如何使用新创建的对象?,django,tastypie,Django,Tastypie,使用Tastypie创建新项目时,我希望能够将其添加到用户的属性中,该属性是一个多对多字段。 现在,我创建的对象如下所示: def obj_create(self, bundle, request=None, **kwargs): return super(GoalResource, self).obj_create(bundle, request, user=request.user) 我想创建新对象,但当我想将其添加到request.user的属性goal_列表时。但是,我所拥

使用Tastypie创建新项目时,我希望能够将其添加到用户的属性中,该属性是一个多对多字段。 现在,我创建的对象如下所示:

  def obj_create(self, bundle, request=None, **kwargs):
    return super(GoalResource, self).obj_create(bundle, request, user=request.user)

我想创建新对象,但当我想将其添加到request.user的属性goal_列表时。但是,我所拥有的将立即在数据库中创建对象。如何创建对象,然后将其添加到用户的目标列表属性中?

您没有向我们显示资源定义,但假设您使用的是
tastype.resources.ModelResource
作为基类,这应该可以:

def obj_create(self, bundle, request=None, **kwargs):
    bundle = super(GoalResource, self).obj_create(
        bundle, request, user=request.user)

    user = request.user
    user.goals.add( bundle.obj )
    user.save()
    return bundle
这是因为
ModelResource
类的
obj\u create
方法返回一个包含已保存对象的bundle(
bundle.obj
),您可以在
obj\u create
方法中操作此对象,如图所示,然后才返回它

我还假设request.user包含一个有效的
user
对象(即,已验证),您需要确保它对上面的工作有效,或者在它不起作用的情况下,您应该添加一些错误处理代码


希望这能有所帮助:)

我还没有足够的声誉发表评论,所以我想我会给出第二个答案。上面的答案是正确的,我只是想补充一下,obj_create调用中不再存在该请求。您可以通过bundle.request访问当前请求:


谢谢你的回答,它也帮助了我

由于以下原因,各地的答案都需要更新:)