Django 通过使用FK覆盖另一个模型的保存方法来更新对象/实例
我有以下型号:Django 通过使用FK覆盖另一个模型的保存方法来更新对象/实例,django,django-models,django-queryset,Django,Django Models,Django Queryset,我有以下型号: class Acc(models.Model): name = models.CharField( max_length=35) class User(AbstractBaseUser, PermissionsMixin): acc = models.ForeignKey(Acc, blank=True, null=True, related_name='owner', on_delete=models.CASCADE) class Note(m
class Acc(models.Model):
name = models.CharField( max_length=35)
class User(AbstractBaseUser, PermissionsMixin):
acc = models.ForeignKey(Acc, blank=True, null=True, related_name='owner', on_delete=models.CASCADE)
class Note(models.Model):
name = models.CharField( max_length=35
receiver = models.ForeignKey(settings.AUTH_USER_MODEL, blank=True, null=True, on_delete=models.CASCADE)
class Item(models.Model):
note = models.ForeignKey(Notification, on_delete=models.CASCADE,)
acc = models.ForeignKey(Acc, on_delete=models.CASCADE)
def save(self, *args, **kwargs):
.....
# update note
Note.objects.filter(id=self.note_id).update(receiver=self.account.owner)
我覆盖项
对象/模型上的保存
方法,以使用外键更新注释
模型接收器
我得到以下错误:
int() argument must be a string, a bytes-like object or a number, not 'RelatedManager'
它由以下行触发:
Note.objects.filter(id=self.note_id).update(receiver=self.acc.owner)
所有者
是Acc
模型的相关管理者,是用户
模型,我想为接收者
输入注释获取该模型。您的模型似乎有误。用户有Acc的外键,这意味着每个Acc可能有许多用户对象。因此Acc.owner
是一个管理器,允许您通过例如Acc.owner.all()
访问所有这些对象
要么您希望FK从一个Acc转到另一个方向,从一个Acc转到另一个用户,这意味着每个用户可以有多个Acc,要么您应该使用OneToOneField,这样就有一个Acc和一个用户。您的模型似乎是错误的。用户有Acc的外键,这意味着每个Acc可能有许多用户对象。因此
Acc.owner
是一个管理器,允许您通过例如Acc.owner.all()
访问所有这些对象
要么您希望FK朝另一个方向移动,从Acc到用户-这意味着每个用户可以有多个Acc-要么您应该使用OneToOneField,这样就有一个Acc和一个用户。请显示完整回溯。添加的更多信息请显示完整回溯。添加的更多信息我更改与OneToOneField的关系我更改与OneToOneField的关系