【发布时间】:2012-10-06 23:18:21
【问题描述】:
我现在要生气了 - 我无法创建新的团队实例。 Django总是显示错误:'Team' instance needs to have a primary key value before a many-to-many relationship can be used.
这是我的模型:
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)
有人能看出错误吗?
编辑 我已经阅读了文档和这个(非常好的)答案How to create an object for a Django model with a many to many field? - 仍然无法弄清楚出了什么问题
【问题讨论】:
-
这段代码看起来是正确的。也许错误位于其他地方?这是您的整个代码还是被截断?您可以发布完整的堆栈跟踪吗?
-
有一个自定义保存方法 - 但它只调用
super(Team, self)...- 这是堆栈跟踪:dpaste.com/814410 -
我能看到这种情况发生的唯一方法是你的 save() 方法没有提交到数据库。请包含您的自定义 save() 方法的代码。
-
用 save() 方法更新问题
标签: django django-models django-orm