我正在嘗試在django 1.10中開發一個應用程序。我想知道如何在創建時以一對多的關係初始化對象的屬性。我們稱之爲兩個相關對象'Set'(一)和'Element'(許多)。在django中爲對象創建不可編輯的屬性
對象'Set'的屬性'name'取決於日期和已經創建的相同類型的其他對象的數量。在這種情況下,我將這些值初始化爲我感興趣的值時沒有問題。
但是,對象'元素'的屬性'name'取決於創建的其他元素的數量,也取決於'name'它與之相關的'Set'。我如何獲得這些信息?
我試圖創建一個方法使用作爲變量的ForeignKey值,但我只是獲得一個錯誤的回報。我想是這樣的:
// in models.py
def get_element_name(set_id):
set = Set.objects.get(pk=set_id)
set_name = set.name
return set_name +'other stuff'
class Set(models.Model):
// set attributes
class Element(models.Model):
set = models.ForeignKey(Set, on_delete=models.CASCADE)
name = models.CharField(max_length=250, editable=False, default=get_element_name(set.pk))
我可以看到這是錯誤的(在ForeignKey的無PK屬性),但我無法找到任何其他解決我的問題。
(我想什麼獲得做法:將集的名稱是由字母製成,對應於創作的一年,即每一個新的對象被創建時增加了一些A001是2017年創造的第一套,第二套是A002,而B001是2018年的第一套......元素的代碼應該是集合的名稱加上一個字母,根據創建的其他元素的數量例如A001A是A001的第一個元素,A001B的第二個等...)
你的問題是有點我不清楚。你能解釋一下你想要元素的名字是什麼嗎?也許通過一個例子? – Dunno
你能提供你正在得到的錯誤嗎? –
我收到錯誤:AttributeError:'ForeignKey'對象沒有屬性'pk' – user2504163