python - 如何在绑定方法中获取实例名称?
问题描述
我做了一个“俱乐部”课程和几个实例。然后我将学生设置为俱乐部的外键。像这样。
在模型.py
class Club(models.Model):
club = models.CharField(max_length=30)
def __str__(self):
return self.club
class Student(models.Model):
student = models.CharField(max_length=30)
clubs = models.ManyToManyField(Club, related_name='inclubs')
class_s = models.ForeignKey(Class, on_delete=models.CASCADE)
isfilled = models.BooleanField(default=False)
atclub = models.ForeignKey(Club, on_delete=models.CASCADE)
def __str__(self):
return self.student
def atclub(self):
return self.atclub
我想知道哪个俱乐部的学生参与其中。所以我写道,
在我的 results_view.html 中
<head>
<meta charset="UTF-8">
<title>동아리 신청 확인</title>
</head>
<body>
<ul>
{% for student in a %}
<div style="text-align:center">
<li>{{student.student}}--{{student.atclub}}</li>
</div>
{% endfor %}
</ul>
<a href="{% url 'club:index'%}">Go to the main</a>
</body>
</html>
但结果是,
(页面预览)
(student name)--<bound method Student.atclub of <student name>>
我想获取俱乐部名称而不是绑定方法。我该如何解决这个问题?
解决方案
你没有atclub
字段。您有一个atclub
方法,它替换了该字段:
atclub = models.ForeignKey(Club, on_delete=models.CASCADE)
def atclub(self):
return self.atclub
第二个atclub
名字取代了第一个;你不能两者兼得。调用atclub
方法只会返回方法对象本身。
重命名一个或另一个,或完全删除该方法(它似乎没有任何用处)。