当我尝试运行以下代码时,Django表示:“未定义名称'cards'。”
class CardSet(models.Model):
cards = Card.objects.all()
def show_card(self):
for card in cards:
print(card)
但是,如果我将这样的代码放进去,它就可以工作。
class CardSet(models.Model):
def show_card(self):
cards = Card.objects.all()
for card in cards :
print(card)
你能为我解释一下吗?谢谢!
如果这是您的代码(而不是至少有一个语法错误的已发布代码):
class CardSet(models.Model):
cards = Card.objects.all()
def show_card(self):
for card in cards:
print(card)
这个有很多问题:
Card.objects.all()
一个many2many字段。有关更多详细信息,请参阅文档。否则,您的方法将不适合作为实例方法。self
可能是您想要的引用self.cards
而不是cards
。建议的代码:
class CardSet(modelsModel):
cards = models.ManyToManyField(Card)
def show_cards(self):
for card in self.cards.all():
print(card)
OTOH ifcards
仅仅是一个类范围的查询集,而不是m2m关系...
class CardSet(modelsModel):
cards = Card.objects.all()
def show_cards(self):
for card in self.cards:
print(card)
解决方案本质上是相同的:add self
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句