gpt4 book ai didi

python - 使用 Django 查询获取相关模型

转载 作者:太空宇宙 更新时间:2023-11-04 06:07:01 25 4
gpt4 key购买 nike

你能帮我做 Django 查询吗?我是这方面的新手,我正在尝试优化我网站中的查询。以下是当前案例:我使用标准用户模型作为基础模型,并有 3 种类型的用户,它们与之相关:A、B 和 C。“用户”只能与这 3 种模型中的一种相关。目前我有一个来自模型 D 的实例列表,它也与用户相关。下面是我的代码

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/except 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)

您可以根据自己的喜好对其进行改进,但您明白了...

希望对您有所帮助,

问候,

关于python - 使用 Django 查询获取相关模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21431007/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com