は、これが私のviews.pyに私のmodels.pyDjangoは、どのように私はこれを行う
class UserWidget(models.Model):
user = models.ForeignKey(User, related_name="widgets")
widget = models.ForeignKey(Widget)
options = JSONField(default="{}")
category = models.ManyToManyField(WidgetUserCategory)
class UserWidgetAtomic(UserWidget):
atomic = models.ForeignKey(Atomic)
class UserWidgetNonAtomic(UserWidget):
nonatomic = models.ForeignKey(NonAtomic)
です(可能な場合)、子供のクラスの正確な型を知っていますそれは問題ではありません)
widgets = user.widgets.all()
可能であれば、サブクラス化されたオブジェクトの型を反復しながら知りたいと思います。例えば
for item in widgets:
if item.__class__.__name__ == "UserWidgetAtomic":
do this
elif item.__class__.__name__ == "UserWidgetNonAtomic":
do that
これは可能ですか?どうやって?
if isinstinstance(item、UserWidgetAtomic):...のようなものhttps://docs.python.org/2/library/functions.html#isinstance – allcaps
はい、これは動作しません。 isinstance(item、UserWidget)は私にTrueを与えますが、isinstance(item、UserWidgetAtomic)は私に偽を返します – xpanta
あなたはテーブル構造が過度に複雑だと思います。 'UserWidget'は中間のmany2manyモデルとして使われるべきです。あなたの質問に 'Atomic'と' NonAtomic'モデルを追加できますか? 'category'も' UserWidget'モデルでは間違っているようです。数多くの関係がありますので、名前は 'categories'でなければなりません。 – trixn