我有以下型号:
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)
我覆盖save
对象/模型上的Item
方法,以使用ForeignKey更新Note
模型receiver
。
我收到以下错误:
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)
owner
是Acc
模型的相关管理者,也是一个User
模型,我想通过Note中的receiver
键获得它。
答案 0 :(得分:2)
您的模型似乎不对。用户具有Acc的ForeignKey,这意味着每个Acc可能有许多个User对象。因此,acc.owner
是一个经理,可让您通过例如acc.owner.all()
访问所有这些对象。
您要么希望FK朝着从Acc到User的另一个方向发展-这意味着每个User可以拥有多个Accs-或者您应该使用OneToOneField,以便有一个Acc和一个User。