iT邦幫忙

0

django model動態名稱

各位大大好,小弟是python新手,
關於python django部份,有以下的問題。

情境如下:
db資料表分為每個月的資料,表名稱如下:
ex: History202001、History202002、History202003...

# models.py
class testTable(models.Model):
    mpi_id = models.CharField(primary_key=True, max_length=10)
    recipe_id = models.CharField(max_length=50)
    plc_value = models.CharField(max_length=50, blank=True, null=True)
    update_at = models.DateTimeField(blank=True, null=True)

    class Meta:
        app_label = 'testDB'
        db_table = 'History202001'   # 這裡是我的資料表名稱,我希望它是動態的

# views.py
from .models import testTable
testData = testTable.objects.all()   # 此處該如何在使用時傳參

以上情境發生一個狀況,就是當我需要讀不同月份時,我就需要在models.py的檔案一直新增"類",請問有沒有方法能夠在使用到models模型時,帶一個參數來讓db_table在使用上更靈活一些?

感謝各位大大!!!

froce iT邦大師 1 級 ‧ 2021-03-19 13:00:50 檢舉
重新設計你的model,因為資料庫很少這樣用。通常都是沒正規化造成。

真的有必要的話:
https://github.com/dobarkod/django-dynamic-model
回froce大大,主要是因為資料量有點多,所以將各個月分切分出來,小弟會在好好思考一下是否應該從DB下手!!
感謝感謝!!

2 個回答

1
I code so I am
iT邦高手 1 級 ‧ 2021-03-20 21:42:58

是不是可以把 db_table 放進欄位中,亦即多個資料表合併為一個資料表。

回大大,主要是資料量稍微多了一些,所以才會依照月份拆分,
小弟會思考一下!!
感謝感謝!!

0
nj
iT邦新手 5 級 ‧ 2021-04-13 08:25:09

可以再開個欄位存月份,先filter月份應該就可以做到你想要的效果?

回大大,會這樣分表存的原因是因為資料量較大,所以在搜尋時會導致越來越慢的情況發生,所以才分月份存取,大大所說的方法可以達成效果,但是會發生另一個問題!!

不過還是感謝您!!!

nj iT邦新手 5 級 ‧ 2021-04-14 16:18:52 檢舉

會慢通常應該會用index之類的方法解?

我要發表回答

立即登入回答