呈现ManyToManyField

时间:2019-03-01 23:41:30

标签: django python-3.x for-loop django-templates

我正在尝试通过一个模型来渲染ManyToManyField,该模型可以显示一个酒店列表,其中工作人员属于每个酒店。

我正在尝试在模板中显示正在显示的当前酒店内的用户,但出现错误

auth.User.None

我的模板

{% for Hotel in object_list %}
         {{ Hotel.collaborateurs }}
              {% endfor %}

我的模型。py

class Hotel(models.Model):
collaborateurs = models.ManyToManyField(User, verbose_name="Liste des collaborateurs autorisés")
              (....)

谢谢

编辑;

我能够吸引用户,但是我正在渲染一个不美观的代码:

我只想呈现用户名。

2 个答案:

答案 0 :(得分:1)

您需要使用.all,因为许多关系总是被懒惰地加载到Django中。

Hotel.collaborateurs.all

此外,变量名称在Python中应小写。

collaborateurs =在左侧需要缩进。

希望有帮助。

答案 1 :(得分:0)

models.py

class Song(models.Model):
user = models.ManyToManyField(User)
song_name = models.CharField(max_length=50)
song_duration = models.IntegerField()

def written_by(self):
    return ",".join([str(p) for p in self.user.all()])

html 文件

    {% for data in data %}

        {{data.written_by}}   # It returns username
        {{data.song_name}}
        {{data.song_duration}}

    {% endfor %}