我正在寫一個django模型,我想限制它的記錄數量超過數據庫中可以存在的數量。 例如,假設我有一臺收音機,它可以有6個不同的可配置電臺 - 限制數據庫中電臺數量的最佳方法是什麼?模型的記錄數量限制
3
A
回答
4
您通過覆蓋save
method並檢查每個無線電只有6個電臺來實現此目的。如果正在添加第七個工作站,則可以用適當的錯誤消息中止保存。
+0
我是否正確理解,如果是這樣,我們必須做一個額外的'選擇'來確定計數是否正確? – sergzach
0
在這種情況下,您可以創建一個具有單個實例的無線電模型(類似singletone)並創建6個工作站作爲一對一的字段。請參閱可能的決定。
好處是你可以有隨機訪問到每個站。沒有更多的檢查。
class RadioHasNotStationError(Exception):
pass
class _Station(models.Model): # private model, so, you can't use the class anywhere else
# fields of station
class Radio(models.Model):
station1 = models.OneToOneField(_Station)
station2 = models.OneToOneField(_Station)
station3 = models.OneToOneField(_Station)
station4 = models.OneToOneField(_Station)
station5 = models.OneToOneField(_Station)
station6 = models.OneToOneField(_Station)
def set_station(self, num, val):
try:
setattr(self, 'station{0}'.format(num), val)
except AttributeError:
raise RadioHasNotStationError("The radio has not station {0}".format(num))
def get_station(self, num):
try:
result = getattr(self, 'station{0}'.format(num))
except AttributeError:
raise RadioHasNotStationError("The radio has not station {0}".format(num))
...
@staticmethod
def get_inst():
try:
result = Radio.objects.select_related().get(id = 1)
except Radio.DoesNotExist:
result = Radio.create()
return result
radio = Radio.get_inst()
radio.station1 = new_station
# ...
radio.set_station(5, new_station2)
# ...
station4 = radio.get_station(4)
# ...
radio.save()
相關問題
- 1. 限制的記錄
- 2. 限制django應用程序模型中的單個記錄?
- 3. 限制天的記錄數和計數
- 4. 記錄與限制
- 5. will_paginate限制記錄
- 6. 在Django中限制數據庫記錄的數量或年齡
- 7. 如何限制模型每天創建一條記錄?
- 8. 限制的記錄的數目
- 9. 數據記錄從模型
- 10. 獲取有限數量的Firebase記錄
- 11. 我想限制從我的MongoDB獲取記錄的數量
- 12. 限制Rails中表中的記錄數
- 13. 限制的記錄數在MySQL查詢
- 14. 如何限制的記錄數創建
- 15. Aerospike select query中的記錄數限制
- 16. hadoop mapreduce處理記錄的限制數
- 17. 分組時的限制數記錄
- 18. 限制記錄和放置限制
- 19. 子窗體訪問中的記錄數量限制
- 20. 蒙戈:限制返回的記錄增量計數片上
- 21. 如何限制ORACLE查詢返回的記錄數量?
- 22. 如何限制用戶添加的記錄數量(評論)?
- 23. 如何限制爲Interbase 7.1返回的記錄數量?
- 24. 正確限制SQL和休眠中特定記錄的數量
- 25. Sencha觸摸列表頁面:限制商店的記錄數量
- 26. 如何限制在SSIS包中處理的記錄數量?
- 27. LinqDataSource - 你能限制返回的記錄數量嗎?
- 28. 使用限制顯示x的記錄數量
- 29. jQuery - 限制視頻錄像的數量
- 30. Rails:模型限制
我不認爲每個數據庫後端都有行限制功能,但爲什麼你要在db級別上使用這個功能呢?使用該程序的人是否直接訪問數據庫?爲什麼不能使用模型保存或表單保存功能來處理限制? –
一個問題要澄清一下:你想要一個永久號碼的電臺還是用戶可以配置這個號碼? – sergzach
永久性號碼,不可配置。 –