我做了一个'俱乐部'课程和几个实例。然后我把学生作为俱乐部的外键。像这样。
在models.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>>
我想获得俱乐部名称而不是绑定方法。我该如何解决这个问题?
答案 0 :(得分:3)
您没有atclub
字段。您有一个atclub
方法,它取代了字段:
atclub = models.ForeignKey(Club, on_delete=models.CASCADE)
def atclub(self):
return self.atclub
第二个atclub
名称取代了第一个;你不能兼得。调用atclub
方法只会返回方法对象本身。
重命名其中一个,或完全删除该方法(似乎没有任何使用方法)。
答案 1 :(得分:1)
您无需定义方法。
def atclub(self):
return self.atclub
由于atclub
已经是属性,因此student.atclub
可以正常工作。