gpt4 book ai didi

django - 类型错误:* 之后的 add() 参数必须是序列,而不是订阅者

转载 作者:行者123 更新时间:2023-12-02 04:45:01 25 4
gpt4 key购买 nike

class Subscribers(User):
date = models.DateField()
user = models.OneToOneField(User)

class Tour(models.Model):
owner_id = models.ForeignKey(User)
name = models.CharField(max_length=50)
location = models.ManyToManyField(Location)
subscribers = models.ManyToManyField(Subscribers, related_name="sub")

我正在尝试在另一个文件中执行此操作:

user1 = User.objects.create_user('John','j@j.com','j1')
user2= User.objects.create_user('Mike','m@m.com','m1')
user3= User.objects.create_user('kokoko','m@m.com','m1')
user4= User.objects.create_user('lalal','m@m.com','m1')
sub = Subscribers()
tour = Tour()
tour.id = "1"
tour.name = "hello"
tour.owner_id = user1
tour.subscribers = sub

但是我有这个错误:类型错误: * 之后的 add() 参数必须是序列,而不是订阅者

最佳答案

ManyToMany 管理器假设当您这样做时

tour.subscribers = sub

subSubscribers 的序列(元组、列表、查询集),而不是单个对象。那么这样做与这样做完全相同:

tour.subscribers.add(*sub)

由于 sub 不是一个序列,所以它会抛出这样的错误。我建议先保存然后再添加。我认为它也更具可读性,但这可能只是我的意见:

sub = Subscribers()
tour = Tour()
tour.id = "1"
tour.name = "hello"
tour.owner_id = user1
tour.save()
tour.subscribers.add(sub)

希望这有帮助:)

关于django - 类型错误:* 之后的 add() 参数必须是序列,而不是订阅者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13576350/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com