1
當屬性我有以下問題和Django:Django的 - 不能訪問對象應用過濾器
我的模型定義如下:
from django.db import models
class SettingSection(models.Model):
section = models.CharField(max_length=20)
def __unicode__(self):
return self.section
class SettingParam(models.Model):
section = models.ForeignKey(SettingSection)
param = models.CharField(max_length=20, unique=True)
description = models.CharField(max_length=200, blank=True)
def __unicode__(self):
return self.param
class SettingPreset(models.Model):
preset = models.CharField(max_length=20, unique=True)
current = models.BooleanField()
def __unicode__(self):
return self.preset
class SettingValue(models.Model):
preset = models.ForeignKey(SettingPreset)
param = models.ForeignKey(SettingParam)
value = models.CharField(max_length=100, blank=True)
def __unicode__(self):
return self.value
試圖訪問任何屬性時,我有以下錯誤我SettingValue對象:
>>> from settings.models import *
>>> preset = SettingPreset.objects.get(current=True)
>>> for section in SettingSection.objects.all():
... for param in section.settingparam_set.all():
... v = SettingValue.objects.filter(preset=preset, param=param)
... print v.id, v.value
...
Traceback (most recent call last):
File "<console>", line 4, in <module>
AttributeError: 'QuerySet' object has no attribute 'id'
然而,屬性( 「id」 和 「值」)似乎存在:
>>> for section in SettingSection.objects.all():
... for param in section.settingparam_set.all():
... v = SettingValue.objects.filter(preset=preset, param=param)
... print v.values()
...
[{'value': u'192.168.1.29', 'id': 1, 'preset_id': 1, 'param_id': 1}]
[{'value': u'en1', 'id': 2, 'preset_id': 1, 'param_id': 2}]
[{'value': u'0', 'id': 3, 'preset_id': 1, 'param_id': 3}]
[{'value': u'', 'id': 4, 'preset_id': 1, 'param_id': 4}]
[{'value': u'', 'id': 5, 'preset_id': 1, 'param_id': 5}]
此外,我能夠訪問任何屬性不應用過濾器,以我的對象:
>>> for v in SettingValue.objects.all():
... print v.id, v.value
...
1 192.168.1.29
2 en1
3 0
4
5
哇,真是一個超級快,完美的答案。你真的很搖滾!千謝謝湯姆。 –
不客氣。不要忘記將問題標記爲向其他用戶表明問題已解決,並向我的帳戶添加一些業力點;-) –
我已將問題標記爲已回答,但似乎我的聲譽尚未達到授予我特權給你加分。無論如何,感謝一千次。 –