“NoneType”对象没有属性“add”

Mel*_*art 2 python django django-models

我有以下用户对象,

class User(AbstractBaseUser, PermissionsMixin, Base):
    username = models.CharField(
        db_index=True, 
        null=False, 
        unique=True,  
        max_length=255,
    )
    mobile = PhoneNumberField(
        db_index=True,  
        null=False,  
        unique=True,
    )
    is_staff = models.BooleanField(default=False)
    is_superuser = models.BooleanField(default=False)
    is_active = models.BooleanField(default=False)
Run Code Online (Sandbox Code Playgroud)

我有以下课程来管理连接,

class Connections(Base):
    owner = models.OneToOneField(
        User, 
        on_delete=models.CASCADE,
        null=True,
    )
    friends = models.ForeignKey(
        User, 
        on_delete=models.CASCADE,
        related_name='friend_set',
        null=True, 
        blank=True,
    )
    followers = models.ForeignKey(
        User, 
        on_delete=models.CASCADE,
        related_name='follower_set',
        null=True, 
        blank=True,
    )
    followings = models.ForeignKey(
        User, 
        on_delete=models.CASCADE,
        related_name='following_set',
        null=True, 
        blank=True,
    )
Run Code Online (Sandbox Code Playgroud)

当我尝试添加好友时,

sender = User.objects.get(
    id=kwargs.get('sender_id')
)
receiver = User.objects.get(
    id=kwargs.get('receiver_id')
)
sender_connections, created =(
    Connections.objects.get_or_create(owner=sender)
)
sender_connections.friends.add(receiver)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误,

'NoneType' object has no attribute 'add'
Run Code Online (Sandbox Code Playgroud)

有人可以帮我弄这个吗?

小智 5

看来您正在尝试使用django 相关管理器添加功能

sender_connections.friends.add(receiver)

然而,连接上的friends属性是ForeignKey关系而不是ManyToManyField。这意味着当您调用sender_connections.friends并且连接不存在时,您将得到 None。

如果将属性更改为 ManyToManyField,则将sender_connections.friends返回 ManyRelatedManager 并且添加应该按预期工作。