AttributeError: 类型对象...没有属性'objects
这是 models.py 文件的一部分
class Hardware_type(models.Model):
type = models.CharField(blank = False, max_length = 50, verbose_name="Type")
description = models.TextField(blank = True, verbose_name="Description")
slug = models.SlugField(unique = True, max_length = 255, verbose_name = "Slug")
class Software_type(models.Model):
type = models.CharField(blank = False, max_length = 50, verbose_name="Type")
description = models.TextField(blank = True, verbose_name="Description")
slug = models.SlugField(unique = True, max_length = 255, verbose_name = "Slug")
现在我遇到了一些问题
>>> sw = Software_type.objects.get(slug='unix')
>>> sw
<Software_type: Unix>
>>> hw = Hardware_type.objects.get(slug='printer')
Traceback (most recent call last):
File "<console>", line 1, in <module>
AttributeError: type object 'Hardware_type' has no attribute 'objects'
我不知道为什么会这样。有没有人能帮我一下?
补充说明:
抱歉,我没有发完整代码 - 问题解决了。在我另一个类里,我有
hardware_type = models.ManyToManyField(Hardware_type, verbose_name="Hardware Type")
把 hardware_type 改成 hw_type 后 - 一切正常。 我之前不知道这会导致问题。
4 个回答
1
你的代码在我这儿能正常运行:
>>> hw = Hardware_type.objects.get(slug='111')
>>> hw
<Hardware_type: Hardware_type object>
不过,使用关键字 type
可能有点危险,建议你最好不要用它。
13
如果你给一个模型添加了一个自定义管理器,那么默认的管理器 objects
就不会自动创建了。你要么自己在类定义里添加一个,要么就继续使用你自定义的管理器。
1
结果发现,只有在 Django 控制台里才开始工作。
后来我注意到我在 forms.py 里有一些旧代码。
class Hardware_type(forms.ModelForm):
class Meta:
model = Hardware_type
所以它就没法正常工作,那天真是个糟糕的命名类的日子等等。