1
我有一個Django模型實例混合的Python對象列表,並且需要在某些字段上過載__eq__
運算符以進行過濾。這工作正常,直到我碰到一個ForeignKey
由於只接受特定模型實例的屬性引發錯誤。如何覆蓋ForeignKey只讀字段?強制刪除一個屬性?
如何覆蓋此屬性?即使刪除它會很好,因爲我沒有在模板中使用它。
這種模式的原因是,在某些條件下,我希望某些屬性總是匹配每個對象的傳入搜索參數(我在搜索的對象中有通配符,而不是搜索查詢)。
class AlwaysEqual(object):
def __eq__(self, a):
return True
for i in bag_of_objects:
if certain_conditions_met:
i.foo = AlwaysEqual()
# ValueError: Cannot assign "AlwaysEqual": "ProductFile.option1" must be a "ProductOptionValue" instance.
# is there a way to delete this attribute?
del i.foo
# AttributeError: __delete__
很酷的想法!我喜歡。我很好奇如何重寫屬性本身...雖然有一個屬性我無法改變,這很奇怪。 – 2012-06-10 16:38:03
你爲什麼要重寫它?我不太清楚這個覆蓋的目的......你能舉一些例子嗎? – Tisho 2012-06-10 16:51:27
爲什麼我想重寫它並不重要:這是一個學術問題。 'SingleRelatedObjectDescriptor'有一個'__set__'引發這個錯誤。我怎樣才能刪除屬性本身。如何重置屬性? – 2012-06-10 16:58:00