Django Model Error: field x before this many-to-many relationship can be used
Django Model Error: field x before this many-to-many relationship can be used
我在尝试添加来自用户的多对多关系时遇到以下错误。
ValueError: "" needs to have a value for field
"appuser" before this many-to-many relationship can be used.
这就是我正在做的...
> 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
您需要在创建对象之间的多对多关系之前保存对象。
user = AppUser(email="test@test.com", password="password")
address = Address(name="test",address_line1="1")
user.save()
address.save()
user.address.add(address)
原因是每个多对多关系字段都将其数据存储在一个单独的 table 中,该 table 包含两个对象的 ID。对象之间的关系是 table 中的行。所以很明显,对象在进入关系之前首先需要有 ID。他们通过保存获得 ID。
我在尝试添加来自用户的多对多关系时遇到以下错误。
ValueError: "" needs to have a value for field "appuser" before this many-to-many relationship can be used.
这就是我正在做的...
> 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
您需要在创建对象之间的多对多关系之前保存对象。
user = AppUser(email="test@test.com", password="password")
address = Address(name="test",address_line1="1")
user.save()
address.save()
user.address.add(address)
原因是每个多对多关系字段都将其数据存储在一个单独的 table 中,该 table 包含两个对象的 ID。对象之间的关系是 table 中的行。所以很明显,对象在进入关系之前首先需要有 ID。他们通过保存获得 ID。