python - Django模型自我不算作实例?
问题描述
我正在尝试解决一个ValueError: Cannot query "X": Must be "Y" instance.
问题。问题是,我的X
绝对似乎是一个Y
例子。就我而言,X
是self
在一个UserAccount
模型内。以下是一些代码片段:
from other.thing import do_something
class UserAccount(...): # eventually subclasses from Django's user model
@property
def is_weekly_email_enabled(self):
# import pdb; pdb.set_trace() # Debugging entrypoint
return do_something(self)
class UserPreference(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL) # This points to UserAccount
name = models.CharField(max_length=255)
# In other/thing.py :
def do_something(user):
return UserPreference.objects.get(user=user, name="some_preference")
我已经设置了一个pdb
断点is_weekly_email_enabled()
来确认事情。测试输出的实际异常:
ValueError: Cannot query "user1": Must be "UserAccount" instance.
(Pdb) self
<UserAccount: user1>
(Pdb) type(self)
<class 'accounts.models.UserAccount'>
(Pdb) isinstance(self, UserAccount)
True
这里发生了什么?
解决方案
尝试更改return do_something(self)
为return do_something(self.user)
推荐阅读
- android - 集成两个recyclerview,如viewpager和tablayout(动画)
- sql - VSTO:将 __ComObject (Microsoft.Office.Interop.Word.Table) 存储在数据库中
- jenkins - 在我的 Jenkins 配置部分安装“Slack Notification Plugin”后,“Global Slack Notifier Setting”部分未显示
- angular - Angular Schematics - 在 Object.getWorkspace 找不到(未定义)
- selenium - Jenkins 以后台模式启动 chromedriver(如无头模式)
- android - 如果更改包 ID 但旧包 ID 工作,Google Maps Api 无法识别/工作 -Android 工作室
- yourls - 您的:404 和目录问题
- java - 线程和字符串生成器
- apache-nifi - NIFI - ListenTCP 最大连接数设置 - 将 IoT 扩展到 10k
- python - socket.gaierror: [Errno -2] 将变量而不是静态地址分配给 sendto() 函数时,名称或服务未知