0
我已經創建了我的User模型和我的Projects模型之間的多對多關係,並且我想列出特定用戶所屬的所有項目用戶的個人資料頁面。Django:遍歷一個反轉的多對多關係
我模式是:
反向M2M查詢的支持(即,沒有一個ManyToManyField開始在飯桌上):
class User(auth.models.User,auth.models.PermissionsMixin): def __str__(self): return "@{}".format(self.username) class Prosjekter(models.Model): id = models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID') ... users = models.ManyToManyField(settings.AUTH_USER_MODEL, blank=True, verbose_name="Project participants") ...
>>> Publication.objects.filter(article__id=1)
<QuerySet [<Publication: The Python Journal>]>
我可以通過鍵入打印特定用戶的查詢集(這裏用其主鍵是用戶2所示):
class UserDetailView(generic.DetailView):
model = User
template_name = 'accounts/user_detail.html'
results = Prosjekter.objects.filter(users__pk=2),
print(results)
這將返回:
(<QuerySet [<Prosjekter: Project 1>, <Prosjekter: Project two>, <Prosjekter: Project third>]>,)
但是,正如您所看到的,我只呼叫主鍵爲的用戶。相反,我想創建一個可以在一般意義上使用的視圖。具體而言,我可以看到:
- 所有用戶1的項目上http://.../users/1/
- 所有用戶2的項目上http://.../users/2/
- 等
我是新來的Python和Django和有麻煩創造這個觀點。在其他許多嘗試中,我試圖遵循this建議,但沒有成功。因此,你能否幫我解決以下問題?
- 可以更新我的UserDetailView代碼,以便它適用於所有用戶?
- 你能告訴我,我必須在/user_detail.html頁面上執行(如果我理解正確的話,它應該是一個for循環的代碼,通過在Prosjekter模型,並列出了所有的項目迭代只有特定用戶是其中的一部分)。
bakatrouble:謝謝你的快速回復。我可以問你在我的user_detail.html文件中發佈我需要的模板標籤代碼嗎?編輯:沒關係,我得到它的工作:{%爲結果%{}中的prosjekter {{prosjekter.id}} {%endfor%}。謝謝你幫助我 - 我已經坐了幾個小時! – Christian
'{%爲結果結果%} {{result.pk}} {%endfor%}' – bakatrouble
bakatrouble:你能幫我解決一件事嗎?在這篇文章中我沒有提到它,但我實際上在User模型和Projects模型之間有三個多對多的關係:1)Prosjekter中的一個m2m字段名爲** responsiblefordata **,2)Prosjekter中的另一個字段被命名爲**用戶**(您已經幫助過我),以及3)prosjekter中的第三個字段名爲** contactperson **。我試圖使用多個** def get_context_data **,我嘗試將它們合併爲一個def,兩次都使用其他名稱替換_ctx_和_results_。它只會顯示其中一個。 – Christian