gpt4 book ai didi

Django 多对多显示值,而不是对象

转载 作者:行者123 更新时间:2023-12-01 22:43:31 26 4
gpt4 key购买 nike

我正在使用 Django 1.3,具有以下 2 个模型:

class Person(models.Model):
name = models.CharField(max_length=500)
def __unicode__(self):
return self.name

class Trial(models.Model):
person = models.ManyToManyField(Person, blank=True)
strId = str(id)
def __unicode__(self):
return self.strId

我正在尝试将“name”的所有条目显示到一个 View 中,但我目前只返回

只有在查看页面源代码时才能看到。否则它看起来就像一个空白的白色屏幕。

View 如下:

def trial_entry(request, trial):
currentTrial = Trial.objects.get(id = 1)
personName = Trial.person
return HttpResponse(personName)

我显然在这里返回了错误的东西,但我已经搜索了另一种方法来做这件事,但我发现似乎没有任何效果。这是我发现的返回除错误之外的任何内容的唯一方法,因此我认为这是最好的发布方式。

非常感谢

最佳答案

这里有一些错误。首先,personName 没有访问 Trial 的任何实际实例,而您只是获取有关 Trial< 中的 person 属性的信息 类。

因此,您需要做的第一件事就是改变获取人员的方式。

currentTrial = Trial.objects.get(pk=1)
personName = currentTrial.person

你看出有什么不同了吗?我在此 View 中访问 currentTrial,它是您正在处理的 Trial 类的实例。到目前为止有意义吗?

现在,currentTrial.person 实际上是一个 ManyToMany 管理器,可以对其进行迭代,因为我们可以让很多人参加 Trial。所以我们应该调整变量名以使其更有意义。

persons = currentTrial.person.all()

您可以更进一步,只需将 currentTrial 发送到模板上下文,然后在您的模板中访问该试验人员,如下所示:

{% for person in currentTrial.person.all %}
{{ person }}
{% endfor %}

希望对您有所帮助!

关于Django 多对多显示值,而不是对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7462489/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com