你好夥計我新的Django(我剛剛完成了教程),但我想我理解它的基本概念。我寫在這裏,因爲我試圖做一些「困難」使用Django的經驗和搜索互聯網沒有給我一個解決方案。我試圖做的是創建一個基於另一個模型的條目數量的動態模型。更準確地說,我可以說我有以下型號:基於查詢的動態Django模型
class criteria(models.Model):
criteria_text = models.CharField(max_length=200)
monotonicity = models.CharField(max_length=1,choices=(('+','ASCEDING'),('-','DESCENDING')),default='+',verbose_name='Monotonicity')
worst = models.IntegerField(default=0)
best = models.IntegerField(default=0)
我想要做的是通過django管理面板創建所需的所有標準模型實例,然後查詢數據庫中的所有creteria_text實例,併爲每個criteria_text實例創建一個具有屬性的模型。
因此,可以說我將以下條件添加到數據庫中(這些標準criteria_text屬性的對象:顏色,重量,價格
我想用這樣的模型就結了。
class Alternative(models.Model):
Color = models.IntegerField(default=0)
Weight = models.IntegerField(default=0)
Price = models.IntegerField(default=0)
的事情是,在我的應用程序這其中有情況發生了很多次,所以我不能讓模型每次有人添加了基於不同標準的替代品。
搜索我發現我可以定義使用動態模型後格式如下:
attrs = {
'name': models.CharField(max_length=32),
'__module__': 'myapp.models'
}
Animal = type("Animal", (models.Model,), attrs)
所以,問題是我如何定義基於該得到所有標準數據庫查詢「ATTRS」?我可以定義與其他模型這個動態模型的關係?另外,如果用戶添加更多標準,則應該更新已創建的模型。
是這樣的可能嗎? 如果是這樣,請告訴我路徑。
我不認爲定義動態模型是一個很好的解決方案(或任何地方,真的)。相反,您需要一個可以擁有與標準實例一樣多的項目的關係。 –
模型類定義不會在數據庫中創建任何表格,除非您遷移它。您可以動態創建類,但是任何模型操作都會導致錯誤 –
@Daniel Roseman:我有點困惑,關係是寫在模型上的嗎?我仍然需要更新模型本身。也可以說,你說的是有效的,那麼我將不得不手動爲每條標準逐行添加值,並選擇標準。我期望的是獲得整數字段在上面的標準文本的單行上。如果我錯過了某些東西或我在路上,請阻止我。 –