当我尝试运行下面的代码时,Django说:" name' 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)
你可以帮我解释一下吗?谢谢!
答案 0 :(得分:0)
使用self.cards
:
def show_card(self):
for card in self.cards:
print (card)
修改:我看到了您的其他问题Relationships among these models in Django
如果你保持这种关系,只需使用相关的对象查询进行查询:
cards = models.ManyToManyField(Card) # Ref. this relationship
def show_card(self):
for card in self.cards.all(): # <-- querying for cards related to this
# CardSet object
print (card)
答案 1 :(得分:0)
如果这是您的代码(而不是发布的代码至少有一个语法错误):
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如果cards
只是一个类范围的查询集而不是m2m关系......
class CardSet(modelsModel):
cards = Card.objects.all()
def show_cards(self):
for card in self.cards:
print(card)
解决方案基本相同:添加self
。