在我的應用程序中,用戶可以鏈接配置文件。在站點所有頁面上可見的側欄中,我想顯示用戶鏈接到的配置文件的用戶名。到目前爲止,我已經創建了一個m2m字段來鏈接配置文件,並且當用戶登錄時,我將這些信息存儲在會話中,以便它可以與其他會話信息捆綁在一起,並且不會創建另一個必須顯式傳遞給每個模板。但是,在訪問鏈接配置文件列表時,我只能訪問配置文件的ID,而不能訪問其他任何信息。django如何訪問模板中的m2m關係
模型
class Profile(models.Model):
username = models.CharField(max_length=25)
link = models.ManyToManyField('self', null=True, blank=True, related_name='link_profiles')
視圖
def link_profiles(request, pid):
#get both profiles
my_p = Profile.objects.get(id=request.session['profile']['id'])
their_p = Profile.objects.get(id=pid)
#add profiles to eachothers links
my_p.link.add(their_p)
their_p.link.add(my_p)
#save profiles
my_p.save()
their_p.save()
#reset my session var to include the new link
#this is that same bit of code that sets the session var when the user logs in
request.session['profile'] = model_to_dict(my_p)
return redirect('/profiles/' + pid)
模板(使用pyjade)
- for profile in session.profile.link
div
a(href="/profiles/{{ profile }}") profile {{ profile }}
這將輸出類似<a href='/profiles/5'>profile 5</a>
,但使用profile.id
和profile.username
只是把空白的<a href='/profiles/'>profile</a>
。是否有可能以這種方式訪問這些信息而不必創建另一個會話變量(如request.session['links']
)?