AttributeError: тип объекта ... не имеет атрибута "объекты" - PullRequest
8 голосов
/ 16 октября 2011

фрагмент 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'

Я не понимаю, почему это происходит. Кто-нибудь может мне помочь?

Edit:

извините, что не отправил весь код - проблема решена. в другом классе у меня было

hardware_type = models.ManyToManyField(Hardware_type, verbose_name="Hardware Type")

после перехода с hardware_type на hw_type - работает нормально Я не знал, что может вызвать эту проблему.

Ответы [ 3 ]

12 голосов
/ 16 октября 2011

Если вы добавите в модель пользовательский менеджер, менеджер по умолчанию в objects не будет создан.Либо добавьте его самостоятельно в определение класса, либо используйте собственный менеджер.

1 голос
/ 27 октября 2011

оказалось, что только начал работать в консоли django,

Позже я заметил, что у меня есть старый код в forms.py

class Hardware_type(forms.ModelForm):
    class Meta:
        model = Hardware_type

и, таким образом, это не сработало, это был плохой день для именования классов и т. Д.

1 голос
/ 16 октября 2011

Ваш код работает для меня:

>>> hw = Hardware_type.objects.get(slug='111')
>>> hw
<Hardware_type: Hardware_type object>

Однако использование ключевого слова type может быть немного опасным, и, вероятно, вы хотели бы избежать его использования.

...