Django模型错误:可以使用此多对多关系之前的字段x

时间:2015-04-05 19:33:07

标签: python django django-models

尝试从用户添加多对多关系时出现以下错误。

  

ValueError:“”需要为字段赋值   在此多对多关系之前可以使用“appuser”。

这就是我在做什么......

> user = AppUser(email="test@test.com", password="password")
> address = Address(name="test",address_line1="1")
> user.address.add(address)

用户模型:

class AppUser(AbstractBaseUser):
    email = models.EmailField(
        verbose_name='email address',
        max_length=254,
        unique=True,
        db_index=True,
    )
    address = models.ManyToManyField('users.Address', null=True, blank=True)

地址模型:

class Address(Base):
    name = models.CharField(max_length=255)
    address_line1 = models.CharField('Address Line 1', max_length=100)
    def __unicode__(self):
        return self.name

1 个答案:

答案 0 :(得分:2)

您需要在创建对象之前保存对象。

user = AppUser(email="test@test.com", password="password")
address = Address(name="test",address_line1="1")
user.save()
address.save()
user.address.add(address)

原因是每个多对多关系字段都将其数据存储在一个包含两个对象ID的单独表中。对象之间的关系是该表中的行。所以很明显,对象在进入关系之前首先需要有ID。他们通过保存来获取ID。