1
私はPythonオブジェクトのリストをDjangoモデルインスタンスと混合しており、フィルタリングのためにいくつかのフィールドで__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__
クールなアイディア:ちょうどオーバーライドEQ方法とダミーモデルのインスタンスを作成します!私はそれが好きです。私はどのように属性自体をオーバーライドするのか不思議に思うだろう...私は変えることができないプロパティを持つのは奇妙だ。 –
なぜそれを無効にしますか?私はこのオーバーライドの目的を理解することは間違いありません...あなたはいくつかの例を挙げることができますか? – Tisho
なぜ私はそれを無効にしたいのですか?これは学問的な質問です。 'SingleRelatedObjectDescriptor'はこのエラーを投げる' __set__'を持っています。属性自体を削除するにはどうしたらいいですか?属性をリセットするにはどうすればよいですか? –