2

私は今怒ります-新しいチームインスタンスを作成できませんでした。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)

誰かが間違いを見ることができますか?

編集 私はドキュメントとこの(非常に素晴らしい)答えを読みました多対多のフィールドを持つDjangoモデルのオブジェクトを作成する方法は?-まだ何が悪いのか理解できません

4

2 に答える 2

1

ああ、それはあなたのsave()メソッドにあります。この修正を試してください:

def save(self, *args, **kwargs):
    obj = super(Team, self).save(*args, **kwargs)
    if obj.id:
        # for later use
        pass
    return obj
于 2012-10-16T19:31:00.013 に答える
1

@ init3の受け入れられた答えは、objが「NoneType」に解決し続けたため、私には機能しませんでした。つまり、superを呼び出しても何も返されませんでした。次のように機能します:

def save(self, *args, **kwargs):
    super(Team, self).save(*args, **kwargs)
    if self.pk:
        pass
于 2013-05-30T16:53:58.323 に答える