Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用.set()创建具有多个字段的对象_Python_Database_Sqlite_Django Models - Fatal编程技术网

Python 使用.set()创建具有多个字段的对象

Python 使用.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

我有一个Django项目,我正在进行,但我只是想在shell中进行练习,以确保我了解这些关系以及如何访问模型中的特定值

型号.py

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([主持人])