簡體   English   中英

Django模板(如果選擇字段)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM