外部脚本无法识别模型字段

2024-10-05 12:22:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图写一个脚本,我打算在预定的方式使用。 此脚本不是django项目的一部分,但与之通信

剧本像明星一样

import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "proj.settings")
from django.db.models import Q
from app.models import *

transactions = Transaction.objects.filter(Q(paypal_auth != None)
    and Q(paypal_auth.payer_id != None))

现在问题是python控制台的输出:

AttributeError: module 'app.models.paypal_auth' has no attribute 'payer_id'

那么为什么会发生这种情况呢

感谢@daniel,这是我的解决方案:

transactions = Transaction.objects.filter(~Q(paypal_auth__payment_id=None)
    & ~Q(paypal_auth__payer_id=None))

Tags: djangofromimport脚本noneauthidapp
2条回答

这与外部脚本无关。这不是Django中的查询方式;有几件事是错误的,它们在您的主应用程序中也同样错误

您需要使用双下划线语法来交叉关系;此外,不能使用像!=这样的表达式,也不能使用and。您的查询应该是:

transactions = Transaction.objects.filter(
    Q(paypal_auth__ne=None) & Q(paypal_auth__payer_id__ne=None))

请注意,您的第二个条件意味着第一个条件,因此您可以只执行以下操作:

transactions = Transaction.objects.filterpaypal_auth__payer_id__ne=None)

您导入了paypal_auth模块,但类是PayPalAuth,它可能位于paypal_auth模块内

尝试paypal_auth.PayPalAuth.payer_id(或参考特定实例的payer_id

相关问题 更多 >

    热门问题