亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

當并非在所有情況下都需要所有字段時,如何為用戶輸入構建 django 模型

當并非在所有情況下都需要所有字段時,如何為用戶輸入構建 django 模型

MMTTMM 2021-10-10 13:47:50
我正在使用新功能擴展現有的 django 應用程序。問題基本上如下。對不起,如果已經問過這個問題的等價物,我不確定要搜索什么才能找到解決方案。我有一個“商店”模型,其中包含與“部門”模型的多對多關系,并非所有商店都擁有相同的部門。我需要跟蹤每個商店的每日部門數量,并且我需要一個用戶表單來輸入所有這些信息。我不知道是應該創建一個包含所有可能部門的模型,還是應該創建一個具有一個部門和權重的模型,然后每天創建與部門一樣多的對象。此應用程序的擴展能力將非常重要,我想從正確的角度開始。代碼如下。門店部門class Department(models.Model):    id = models.AutoField(primary_key=True)    name = models.CharField(max_length=255, unique = True)    short_name = models.CharField(max_length=32)    description = models.CharField(max_length=255)    def __str__(self):            return self.name;體積數據選項(有問題的模型)選項 1,一個模型,一應俱全:class VolumeData(models.Model):    id = models.AutoField(primary_key=True)    store = models.ForeignKey(stores.models.Store, on_delete=models.DO_NOTHING)    date = models.DateField(auto_now_add=True,null=False,blank=False)    produce = models.DecimalField(decimal_places=2,Null=True)    dairy = models.DecimalField(decimal_places=2,Null=True)    deli = models.DecimalField(decimal_places=2,Null=True)    meat = models.DecimalField(decimal_places=2,Null=True)    seafood = models.DecimalField(decimal_places=2,Null=True)    coffee = models.DecimalField(decimal_places=2,Null=True)    frozen = models.DecimalField(decimal_places=2,Null=True)選項 2,一種模型,但我需要更多對象。class VolumeData(models.Model):    id = models.AutoField(primary_key=True)    store = models.ForeignKey(stores.models.Store, on_delete=models.DO_NOTHING)    date = models.DateField(auto_now_add=True,null=False,blank=False)    department = ForeignKey(Departmnet, blank=False)我覺得選項 2 會更靈活,但我擔心它會創建的額外對象的數量。然而,選項 1 會有很多我不需要的空值,我不確定這是否更糟,它也在部門中烘烤,這可能很復雜?部門列表不會非常動態,我希望每年更新的次數少于一次,并且最終用戶不太可能需要修改該信息。
查看完整描述

1 回答

?
慕沐林林

TA貢獻2016條經驗 獲得超9個贊

我也喜歡選項 2,但我認為您需要更進一步,為每個部門銷售的不同項目創建一個類:


class Items(models.Model):

    id = models.AutoField(primary_key=True)

    product_SKU = models.CharField(max_length=15) # set max_length as needed

    product_name = models.CharField(max_length=50) # set max_length as needed

    number_sold = models.DecimalField(decimal_places=2,Null=True)

有了這種增加的信息深度,您將能夠整合更深層次的報告、人工智能預測、機器學習等。只需我的兩分錢。


查看完整回答
反對 回復 2021-10-10
  • 1 回答
  • 0 關注
  • 202 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號