Pra*_*pta 2 django django-models django-views django-rest-framework
我想已经有很多可用的讨论几乎已经完成了所有讨论,但仍然面临这个错误。
\nclass Device(models.Model):\n """Storing Device ids """\n platform = models.CharField(max_length=3, choices=PLATFORM, default = \'ANR\')\n dev_id = models.CharField(max_length = 255, null=True, blank=False)\n\xe2\x80\x8b\n def __str__(self):\n return str(self.id)\n\nRun Code Online (Sandbox Code Playgroud)\nclass UserProfile(models.Model):\n user = models.OneToOneField(\'user.User\', \n on_delete=models.CASCADE,\n related_name=\'profile\',\n primary_key=True,\n unique=True)\n device = models.ManyToManyField(Device, related_name=\'devices\')\n\xe2\x80\x8b\n def __str__(self):\n return str(self.user)\nRun Code Online (Sandbox Code Playgroud)\n\n\n错误1
\n
username = UserProfile.objects.filter(\n phone_number=user_username).get()\nusername.device.dev_id\n*** AttributeError: \'ManyRelatedManager\' object has no attribute \'dev_id\'\n\n\nRun Code Online (Sandbox Code Playgroud)\n\n\n错误 2\n经过一番研究
\n
\nusername.device.values_list(\'dev_id\', flat=True)\n<QuerySet []>\n\xe2\x80\x8b```\n\nThere is no device found with this user but there are devices in them for this username\nFor the reference, I have listed devices\n\n```python\n>>> Device.objects.all()\n<QuerySet [<Device: 1>]>\nRun Code Online (Sandbox Code Playgroud)\n\n\n错误3
\n
(Pdb) username.device.all()\n<QuerySet []>\n Checked with this Method but not able to list devices\n\nRun Code Online (Sandbox Code Playgroud)\n
Haf*_*uss 14
这是行不通的,因为这device是一种ManyToMany关系。显然,用户可以关联多个设备(或没有)。
如果您想访问某个用户的所有设备,请尝试以下操作:
user.device.all()
这将为您提供QuerySet来自 a 的RelatedManager。就像普通的一样使用它QuerySet:
for d in user.device.all():
print(d.dev_id)
Run Code Online (Sandbox Code Playgroud)
当然,文档中对此进行了描述。
| 归档时间: |
|
| 查看次数: |
12463 次 |
| 最近记录: |