[英]Django template if choice field
我目前正在試圖弄清楚我如何檢查狀態是否確實適用於用戶請求。
models.py
class CategoryRequests(models.Model):
author = models.ForeignKey(User, on_delete=models.CASCADE)
status = StatusField()
STATUS = Choices('Waiting', 'Rejected', 'Accepted')
views.py
def view_profile_categoy_requests_accepted(request, pk=None):
if pk:
user = get_user_model.objects.get(pk=pk)
else:
user = request.user
args = {'user': user}
return render(request, 'myproject/category_request_accepted.html', args)
但是在模板上,這似乎是錯誤的。
template.html
{% if user.categoryrequests.status == 'Waiting' %}
提前致謝
您可以在models.py中為ForeignKey
添加related_name
參數:
class CategoryRequests(models.Model):
author = models.ForeignKey(User, on_delete=models.CASCADE, related_name='status')
status = StatusField()
STATUS = Choices('Waiting', 'Rejected', 'Accepted')
然后在模板中類似:
{% if user.status.STATUS == 'Waiting' %}
此答案詳細說明了related_name
有一個問題user.categoryrequests
。 如果您沒有設置related_name
的外鍵字段,你不能做反向這樣的查找。
您有兩種選擇:
1.無論是使用user.categoryrequests_set
獲得來自用戶的外鍵逆轉。
2.或者,將related_name
上的related_name設置為categoryrequests
,然后可以按照當前的方式進行反向查找。
請參閱有關進行反向查找的文檔。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.