Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.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 '';对象在django中不可编辑_Python_Django - Fatal编程技术网

Python '';对象在django中不可编辑

Python '';对象在django中不可编辑,python,django,Python,Django,我有3种型号:用户、选择、卡。每个用户都会看同一套10张卡片,并决定每一张卡片是否重要 下面是我如何定义类及其关系的 在models.py中: class Choice(models.Model): user = models.ForeignKey(User) card = models.ManyToManyField(Card) is_important = models.NullBooleanField() class Card(models.Model):

我有3种型号:用户、选择、卡。每个用户都会看同一套10张卡片,并决定每一张卡片是否重要

下面是我如何定义类及其关系的

在models.py中:

class Choice(models.Model):
    user = models.ForeignKey(User)
    card = models.ManyToManyField(Card)
    is_important = models.NullBooleanField()

class Card(models.Model):
    card_number = models.IntegerField(primary_key=True)
    content = models.TextField(null=False)
In views.py

(我尝试保存用户对卡的选择。)

然而,我得到了这个错误

'Card' object is not iterable
你能告诉我错误在哪里吗


非常感谢

首先,看起来您在第一个
.get()
参数中忘记了
pk=
Card.objects.get(pk=1)

其次,
Choice.cards
是一个多字段,它需要一个项目列表,而不是一个特定的项目列表。您应该设置为:

choice.card.set(Card.objects.filter(pk=1))
请注意,
=


.filter()
将返回一个QuerySet(可编辑)。我想您需要的是一个
ForeignKey
而不是M2M字段,在这种情况下,您的代码可以工作(使用附加的
pk=
)。

首先,您似乎忘记了第一个
参数中的
pk=
。get()
参数:
Card.objects.get(pk=1)

其次,
Choice.cards
是一个多字段,它需要一个项目列表,而不是一个特定的项目列表。您应该设置为:

choice.card.set(Card.objects.filter(pk=1))
请注意,
=


.filter()
将返回一个QuerySet(可编辑)。我认为您需要一个
ForeignKey
而不是M2M字段,在这种情况下,您的代码可以工作(使用额外的
pk=
)。

您可以针对多对多字段添加对象,如下所示

card =  Card.objects.create(card_number=any_number, content='abc')   
choice.card.add(card)

您可以像这样针对多对多字段添加对象

card =  Card.objects.create(card_number=any_number, content='abc')   
choice.card.add(card)
在你的职能中:

def listings(request):
   user = request.user
   choice = Choice.objects.create(user=user, is_important = True)
   choice.card= Card.objects.get(1)
下一行正在尝试获取卡对象。但是,我们需要指定提取哪张卡。 如果使用id,请按以下方式查询:

 choice.card= Card.objects.get(pk=1)
或者使用ID列表:

 choice.card = Card.objects.filter(pk__in=[12,22])
如果使用卡号字段:

 choice.card= Card.objects.get(card_number=1)
或者使用卡号列表:

 choice.card = Card.objects.filter(card_number__in=[12,22])
在你的职能中:

def listings(request):
   user = request.user
   choice = Choice.objects.create(user=user, is_important = True)
   choice.card= Card.objects.get(1)
下一行正在尝试获取卡对象。但是,我们需要指定提取哪张卡。 如果使用id,请按以下方式查询:

 choice.card= Card.objects.get(pk=1)
或者使用ID列表:

 choice.card = Card.objects.filter(pk__in=[12,22])
如果使用卡号字段:

 choice.card= Card.objects.get(card_number=1)
或者使用卡号列表:

 choice.card = Card.objects.filter(card_number__in=[12,22])

Card.objects.get(1)
不是有效的django语法。你想在那里做什么?你是想用
choice.card=card.objects.get(card\u number=your\u number)
来代替吗?如果书写正确,它将返回一个汽车对象,而不是很多。谢谢大家!我是Django的新手,在截止日期的压力下,我从开始就没有时间从结构上读取Django来获得基础。<代码> CART.Objor。GET(1)< /C> >是无效的Django语法。你想在那里做什么?你是想用
choice.card=card.objects.get(card\u number=your\u number)
来代替吗?如果书写正确,它将返回一个汽车对象,而不是很多。谢谢大家!我是新的Django和在压力的期限,所以我没有时间读Django结构从一开始就得到了基础。