使用Django查询获取相关模型

乔什·阿克顿

您能帮我查询Django查询吗?我是新手,我正在尝试优化网站中的查询。下面是当前情况:我使用标准的用户模型作为基本模型,并且有3种类型的用户与之相关:A,B和C。“用户”只能与这3种模型之一相关。目前,我有一个列表,其中包含来自Model D的实例,该实例也与User有关。下面是我的代码

D = D.objects.all()
for element in D:
try:
     results.append(element.user.A)
except:
    try:
        results.append(element.user.B)
    except:
        results.append(element.user.C)

正如您已经注意到的,在这种情况下,这种解决方案不是最佳解决方案(也许这是最糟糕的)。感谢您的帮助。提前致谢。

编辑:这是我的模型:

class A(models.Model)
    facebook_id = models.CharField(max_length=20, blank=True, null=True)
    user = models.OneToOneField(User, unique=True)
    ...

class B(models.Model)
    user = models.OneToOneField(User, unique=True)
    ...

class C(models.Model)
    user = models.OneToOneField(User, unique=True)
    ...

class D(models.Model):
    user = models.ForeignKey(User)
    F = models.ForeignKey(F)
安布罗瓦

实际上,我前段时间也遇到过同样的问题,如果我要再做一次,无论模型有多么不同,我都会遵循remy_g的提示。

话虽这么说,但您可以使用hasattr()代替混乱的try /除了nest。

http://docs.python.org/2/library/functions.html#getattr

它看起来像什么:

D = D.objects.all()
for element in D:
    if hasattr(element.user, "A"):
        results.append(element.user.A)
    elif hasattr(element.user, "B"):
        results.append(element.user.B)
    elif hasattr(element.user, "C"):
        results.append(element.user.C)

您可以根据自己的喜好对此进行改进,但是您知道了...

希望这可以帮助,

问候,

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Django查询获取相关模型

来自分类Dev

使用非相关模型的 Django 查询对象

来自分类Dev

Django-查询:使用相关模型字段注释查询集

来自分类Dev

使用Django ORM在方法中获取相关模型

来自分类Dev

使用父模型ID查询相关模型

来自分类Dev

在Django中查询相关的模型属性

来自分类Dev

无法在Django中获取相关模型

来自分类Dev

Django获取相关模型的所有记录

来自分类Dev

使用模型 ID 获取完整的相关模型详细信息:Django REST

来自分类Dev

使用查询范围预先加载相关模型

来自分类Dev

JSON Django模型查询集及其相关模型

来自分类Dev

在Django查询中使用values()获取模型而不是ID

来自分类Dev

如何使用Django模型查询获取丢失的数据?

来自分类Dev

如何在当前查询上使用选择获取相关模型?

来自分类Dev

Django:如何获取查询集的相关对象?

来自分类Dev

Django的。获取相关查询集的并集

来自分类Dev

Django:从父模型类获取相关模型类

来自分类Dev

使用多个相关的 Django 模型表单

来自分类Dev

查询相关模型

来自分类Dev

Django按相关模型字段排序查询集

来自分类Dev

django推迟相关模型查询集中的所有字段

来自分类Dev

Django模型查询使用联接

来自分类Dev

骨干获取相关模型

来自分类Dev

获取Django中的所有相关模型类

来自分类Dev

Django ORM中获取相关模型的有效方法

来自分类Dev

如何从Django Rest Framework中的相关模型中获取数据?

来自分类Dev

Django访问相关模型

来自分类Dev

Django模型保存相关模型

来自分类Dev

使用视图模型优化相关数据查询