Python 使用.set()创建具有多个字段的对象
我有一个Django项目,我正在进行,但我只是想在shell中进行练习,以确保我了解这些关系以及如何访问模型中的特定值 型号.pyPython 使用.set()创建具有多个字段的对象,python,database,sqlite,django-models,Python,Database,Sqlite,Django Models,我有一个Django项目,我正在进行,但我只是想在shell中进行练习,以确保我了解这些关系以及如何访问模型中的特定值 型号.py class User(AbstractUser): pass class Profile(models.Model): user = models.OneToOneField("User", on_delete=models.CASCADE, primary_key=True) friend = models.Many
class User(AbstractUser):
pass
class Profile(models.Model):
user = models.OneToOneField("User", on_delete=models.CASCADE, primary_key=True)
friend = models.ManyToManyField("User", related_name='following', blank=True, symmetrical=False)
@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
try:
instance.profile.save()
except Profile.DoesNotExist:
Profile.objects.create(user=instance)
class Post(models.Model):
creator = models.ForeignKey("User", on_delete=models.CASCADE, related_name="post_creator")
content = models.TextField(max_length=250, blank=True)
created = models.DateTimeField(auto_now_add=True)
likes = models.PositiveIntegerField(default=0)
def serialize(self):
return {
"id": self.id,
"creator": self.creator.username,
"content": self.content,
"created": self.created.strftime("%d %b %Y, %H:%M"),
"likes": self.likes
}
现在我没有轮廓对象,所以我尝试创建一个,如下所示:
>>> poetry = User.objects.get(id=1)
>>> Moderator = User.objects.get(id=2)
>>> f = Profile(user=poetry, friend=Moderator)
我得到这个类型错误:
TypeError: Direct assignment to the forward side of a many-to-many set is prohibited. Use friend.set() instead.
我不明白这是什么意思,我尝试了>>>f=Profile(user=poetry,friend.set(版主)),但后来出现了以下错误:
File "<console>", line 1
SyntaxError: positional argument follows keyword argument
文件“”,第1行
SyntaxError:位置参数跟在关键字参数后面
如何使用friend.set()
friend
字段应该命名为friends
。然后,例如,使用配置文件p
,p.friends.set([主持人])