我有一個Django模型請求,它有一個字段Approver,它被設置爲具有超級用戶狀態的用戶。我想自動爲該字段賦值,以便在項目管理員之間輪換。歡迎任何建議。提前致謝。超級用戶Django模型外鍵
0
A
回答
0
我在Admin窗體中編寫了一個函數,該函數將批准者設置爲請求數量最少的用戶。對我來說工作得很好。
def get_recipient(self):
approvers = User.objects.annotate(num_of_requests=models.Count('model_field_related_name')).order_by('num_of_requests')
return approvers.first()
1
我想到的一個簡單的解決方案就是在使用請求模型的html模板中,您可以執行評估可能的已簽名用戶的函數..類似於: 1.在請求中添加一個字段模型,該模型是一個外鍵您的用戶模型 實施例:
class Request(models.Model):
some other code...
assigned_user=models.ForeignKey(User, on_delete=models.CASCADE)
而用戶模型添加asigned布爾:
class User(models.Model):
assigned=models.BooleanField(default=False)
- 然後在HTML
你可以這樣做:
{% for user in Users %}
{% if user.isAdmin %}
{% if not user.assigned %}
<input name="request.varName">{{User.id}}</input>
{% endif %}
{% endif %}
{% endfor %}
請記住,在你看來,你必須打電話請求模型和用戶模型。您可以通過這種方式實現這一目標創造一個請求的代碼:
class RequestCreate(CreateView):
... some other code..
def get_context_data(self, **kwargs):
context = super(RequestCreate, self).get_context_data(**kwargs)
context['Users'] = User.objects.all()
#context['venue_list'] = Venue.objects.all()
#context['festival_list'] = Festival.objects.all()
# And so on for more models
return context
我希望在這裏有用。
0
您可以將函數作爲默認值傳遞。定義一個函數,像這樣
def default_func():
last_assigned = Request.objects.latest().Approver # gets latest assigned Approver
# the below if statement always looks for the next superuser pk
if User.objects.filter(is_superuser=True, pk__gt=last_assigned.pk).exists():
next_assigned_superuser = User.objects.filter(is_superuser=True, pk__gt=last_assigned.pk)\
.order_by('pk')[0]
# if there isn't a superuser with a higher pk than the last_assigned_superuser, it will choose
# the superuser below or equal to it with the lowest pk. This will handle the case where there is
# only one superuser without any fuss.
else:
next_assigned_superuser = User.objects.filter(is_superuser=True, pk__lte=last_assigned.pk) \
.order_by('pk')[0]
return next_assigned_superuser
,並添加到您的審批領域:
# you must pass the function without parenthesis at the end, or else it will
# set the default to whatever the value is at server run time.
# If you pass the function itself, it will be evaluated every time a
# default is needed.
Approver = models.ForeignKey(User, default=default_func)
編輯:增加了一個返回值default_func。哎呦。
相關問題
- 1. MySQL和Django外鍵到用戶模型
- 2. django用戶模型外鍵公司
- 3. Django的 - 外鍵的用戶模型
- 4. 外鍵Django模型
- 5. Django - 意外刪除超級用戶
- 6. Django自定義用戶和超級用戶模型
- 7. Django多個外鍵模型
- 8. Django模型ManyToMany和外鍵
- 9. Django模型外鍵過濾
- 10. django模型外鍵問題
- 11. Django REST組外鍵模型
- 12. Django模型刪除外鍵
- 13. Django模型,循環外鍵
- 14. Django的模型 - 外鍵作爲主鍵
- 15. 2 django模型主鍵和外鍵
- 16. 用外鍵保存django orm模型
- 17. 用django中的外鍵保存模型
- 18. Django:使用多個外鍵模型
- 19. 如何在Django用戶模型上創建自引用外鍵?
- 20. 相同類型的Django模型外鍵
- 21. 使用與默認用戶模型具有外鍵關係的Django模型
- 22. 不能在Django創建自定義的用戶模型超級用戶1.5
- 23. Django admin - 模型對超級用戶可見,而非員工用戶
- 24. Django管理:模型沒有顯示,如果用戶不是超級用戶
- 25. 的Django無法擴展用戶模型和創建超級用戶後登錄
- 26. django上傳到圖像與用戶的外鍵模型
- 27. Django,在模型外鍵中按組篩選用戶
- 28. 的Django:指定當前用戶爲外鍵意見模型
- 29. 如何在django中解析外鍵關係到用戶模型
- 30. 在Django製作外鍵的用戶模型擴展所需
歡迎來到StackOverflow。請花時間在[如何問一個聰明的問題](https://meta.stackexchange.com/questions/18584/how-to-ask-a-smart-question)上閱讀這篇文章,以及如何提供一個[最小,完整,可驗證的例子](https://stackoverflow.com/help/mcve)並相應地修改你的問題。 [如何提出一個好問題](https://stackoverflow.com/help/how-to-ask)上的這些提示也可能有用。 – Jeril
你可以使用你的模型實例的id,併除以你的超級用戶使用%來獲得餘數來選擇一個。 –
我想我們可能需要更多的想法。可以做的是將其分配給分配給它們的請求數最少的管理員。但總的來說,這個問題需要更多的信息 –