我想用一個模型來保存一個django應用程序的系統設置,所以我想限制模型只能有一個記錄,該怎麼做的限制?限制django應用程序模型中的單個記錄?
3
A
回答
3
一個簡單的方法是使用該設置的名稱作爲設置表中的主鍵。用同一個主鍵不能有更多的記錄,這樣Django和數據庫都可以保證完整性。
0
具有單個允許行的模型只不過是「持久對象」的變形形式 - 甚至可能是「持續單身人士」?不要那樣做,那不是模型的工作原理。
5
試試這個:
class MyModel(models.Model):
onefield = models.CharField('The field', max_length=100)
class MyModelAdmin(admin.ModelAdmin):
def has_add_permission(self, request):
# if there's already an entry, do not allow adding
count = MyModel.objects.all().count()
if count == 0:
return True
return False
3
威廉是正確的,但我想這是最好的做法
def has_add_permission(self, *args, **kwargs):
return not MyModel.objects.exists()
正如Django官方文檔報道:
N ote:如果你想要做的只是確定是否存在至少一個結果,那麼不要使用它。 使用exists()會更高效。
https://docs.djangoproject.com/en/dev/ref/models/querysets/#when-querysets-are-evaluated
5
改寫has_add_permission
作品,但在給出的例子是打破在Django的權限系統(工作人員沒有必要的權限,可以添加設置)。這是一個不會打破它的:
class SettingAdmin(admin.ModelAdmin):
def has_add_permission(self, request):
base_add_permission = super(SettingAdmin, self).has_add_permission(request)
if base_add_permission:
# if there's already an entry, do not allow adding
count = Setting.objects.all().count()
if count == 0:
return True
return False
相關問題
- 1. 模型的記錄數量限制
- 2. Django中的模型和應用程序
- 3. Django的:LookupError:應用程序「沒有一個‘模型’模型
- 4. 限制登錄的iPhone應用程序
- 5. Django模型的多元應用程序
- 6. Django的限制的模型中
- 7. 使用django中的模型表單更新記錄
- 8. 跨應用程序使用django模型?
- 9. 使用模板記錄應用程序
- 10. c#控制檯應用程序的記錄器應用程序
- 11. 在mysql中記錄不同記錄後應用10的限制
- 12. 記錄Android應用程序內存限制
- 13. 使用Django模型的應用程序需要是Django應用程序嗎?
- 14. Django,模型和應用程序
- 15. django模型foreignkey beetwen應用程序
- 16. Django(南):更改模型應用程序
- 17. Django模型強制標記
- 18. 單個Django應用程序的多個登錄URL
- 19. 在django模型中限制圖片
- 20. 如何確保在Django中測試單個應用程序時創建額外的應用程序模型表?
- 21. 每個應用程序模塊的多個記錄器實例
- 22. django一個應用程序一個模型多個數據庫
- 23. 限制單個記錄中的用戶帖子
- 24. Django - admin.py在單個django項目中的多個應用程序
- 25. 應用程序啓動時添加模型記錄
- 26. django模型表單,限制在ForeignKey模型中基於值的選擇
- 27. 限制訪問Django應用程序中的所有頁面
- 28. master slave postgresql記錄和監控一個django應用程序
- 29. Django視圖,模型,表單,應用程序命名
- 30. 在經典的asp應用程序中改進記錄級訪問限制