[英]'NoneType' object has no attribute 'add'
我有以下用戶對象,
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)
我有以下課程來管理連接,
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,
)
當我嘗試添加朋友時,
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)
我收到以下錯誤,
'NoneType' object has no attribute 'add'
有人可以幫我弄這個嗎?
看起來您正在嘗試使用與django 相關的管理器添加功能
sender_connections.friends.add(receiver)
然而,連接上的friends 屬性是一個ForeignKey 關系而不是ManyToManyField。 這意味着當您調用sender_connections.friends
並且連接不存在時,您將獲得 None。
如果將屬性更改為 ManyToManyField,則sender_connections.friends
將返回 ManyRelatedManager 並且添加應按預期工作。
作為對wingardtw答案的補充,在 Django 3.0 中,您可以使用 PrimaryKeyRelatedField,而不是使用“add”,您將對查詢集執行更新,如下所示:
Connections.objects.filter(owner=sender).update(friends=receiver)
重要提示:這需要已保存對象。
有關更多信息,請參閱這些鏈接:
https://docs.djangoproject.com/en/3.0/ref/models/querysets/#django.db.models.query.QuerySet.update
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.