gpt4 book ai didi

python - 如何通过 __in 过滤另一个模型对象列表

转载 作者:行者123 更新时间:2023-12-04 09:36:25 24 4
gpt4 key购买 nike

嗨,我想在没有任何连接的情况下在两个模型之间进行查询
我想检查 ModelA 中是否有名字模型在 User

class ModelA(models.Model):
name = models.CharField(max_length=20)
#others
如何进行查询以按 User 中已采用的所有名称进行过滤模型
我试过这些
user_name = User.objects.al() 
#and also this
user_name = list(User.objects.all())
#also this
user_name = User.objects.values()

ModelA.objects.filter(name__in=user_name)
我需要返回所有已在 User 中使用的名称模型!
他们都没有工作?还有其他方法可以实现这个目标吗?
谢谢

最佳答案

您需要选择 username User 的值(或其他字段)模型。例如:

ModelA.objects.filter(
name__in=User.objects.values_list('username', flat=True)
)
对于某些数据库,例如 MySQL,最好先将用户名集合具体化:
ModelA.objects.filter(
name__in=list(User.objects.values_list('username', flat=True))
)
但是,如果您想引用表中的记录,最好使用 ForeignKey [Django-doc]CharField包含相同的用户名。
或为 Form ,您可以使用以下内容填充它:
类 ClientDailyForm(forms.ModelForm):
客户 = forms.ChoiceField(choices=None)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
usernames = list(User.objects.values_list('username', flat=True))
self.fields['values'].choices = [
(c, c)
Client.objects.filter(
name__in=usernames
).values_list('name', flat=True).distinct()
]

class Meta:
model = InvoiceCustomer
fields = '__all__'

关于python - 如何通过 __in 过滤另一个模型对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62562480/

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