Django 实例需要有主键值,才能使用多对多关系

Django 实例需要有主键值,才能使用多对多关系,django,django-models,django-orm,Django,Django Models,Django Orm,我现在要发疯了——我无法创建新的团队实例。Django始终显示错误:“团队”实例需要有主键值,才能使用多对多关系。 这是我的模型: from django.contrib.auth.models import User from django.db import models class Team(models.Model): name = models.CharField(max_length=10) members = models.ManyToManyField(User

我现在要发疯了——我无法创建新的团队实例。Django始终显示错误:
“团队”实例需要有主键值,才能使用多对多关系。

这是我的模型:

from django.contrib.auth.models import User
from django.db import models

class Team(models.Model):
    name = models.CharField(max_length=10)
    members = models.ManyToManyField(User)

    def save(self, *args, **kwargs):
        if self.pk:
            # for later use
            pass
        super(Team, self).save(*args, **kwargs)
现在我想创建一个新团队

from django.contrib.auth.models import User
from models import Team

user_obj = User.objects.get(pk=1)
new = Team()
new.name = 'aaa'
new.save()
new.members.add(user_obj)
有人能看出这个错误吗

编辑 我已经阅读了文档和这个(非常好的)答案-仍然无法找出问题所在

啊,这是在您的save()方法中。尝试此修复程序:

def save(self, *args, **kwargs):
    obj = super(Team, self).save(*args, **kwargs)
    if obj.id:
        # for later use
        pass
    return obj

@init3接受的答案对我不起作用,因为obj一直解析为“非类型”,换句话说,调用super并没有返回任何内容。让它作为:

def save(self, *args, **kwargs):
    super(Team, self).save(*args, **kwargs)
    if self.pk:
        pass

这段代码看起来是正确的。也许错误在别处?这是你的全部代码还是被截断了?你能发布一个完整的堆栈跟踪吗?有一个自定义的save方法-但它只调用
super(Team,self).
-这里是stacktrace:我看到这种情况的唯一方法是,不知何故,你的save()方法没有提交到数据库。请包含自定义save()方法的代码。使用save()方法更新了问题