首页 > 解决方案 > Django 2.0.2 创建模型时出现问题:AttributeError: 'str' object has no attribute '_default_manager'

问题描述

使用 Django 2.0.2

class Rischi(models.Model):
    RISCHIO = (
        ('Nullo', 'Nullo'),
        ('Irrilevante', 'Irrilevante'),
        ('Basso', 'Basso'),
        ('Medio', 'Medio'),
        ('Alto', 'Alto'),
        )
    azienda = models.ForeignKey(
        'azienda.Azienda',
        on_delete=models.CASCADE,
        )
    foto = models.ImageField(upload_to='rischi', blank=True)
    attivita = models.ForeignKey(
        Attivita,
        blank=True,
        null=True,
        on_delete=models.CASCADE,
        )
    luogo = models.ForeignKey(
        Luoghi,
        blank=True,
        null=True,
        on_delete=models.CASCADE,
        )
    macchina = models.ForeignKey(
        Macchine,
        blank=True,
        null=True,
        on_delete=models.CASCADE,
        )
    sostanza = models.ForeignKey(
        Sostanze,
        blank=True,
        null=True,
        on_delete=models.CASCADE,
        )
    fonte_rischio = models.ForeignKey(
        Fonte_rischio,
        on_delete=models.CASCADE
        )
    pericolo = models.CharField(max_length=200)
    mansione = models.ManyToManyField(
        'mansione.Mansione'
        )
    livello_rischio = models.CharField(max_length=200)
    rischio = models.CharField(max_length=200, choices=RISCHIO)
    allegato = models.ManyToManyField(
        Allegati,
        blank=True,
        )
    note = models.TextField(blank=True)
    data_di_creazione = models.DateField(auto_now_add=True)
    data_di_modifica = models.DateField(auto_now=True)

    def __str__(self):
        return  self.fonte_rischio.nome + ", id: "+ str(self.pk)

这是相关的表格

class RischiForm(ModelForm):
    class Meta:
        model = Rischi
        exclude = ['azienda']

当我执行 runserver 这是我收到的消息

AttributeError:“str”对象没有属性“_default_manager”

但是当我设置不包括豪宅的表格时

class RischiForm(ModelForm):
    class Meta:
        model = Rischi
        exclude = ['azienda', 'mansione']

一切都好

我试图阅读手册并用谷歌搜索了这条消息,但我没有找到任何关于这个问题的答案......

标签: pythondjangopython-3.x

解决方案


听起来 mainsione.Mansione 不是模型,而是str- 字符串对象。Django 尝试在这个模型上查找默认管理器,该管理器将是一个_default_manager属性(它是由 Django 自动创建的),但字符串对象不会有这样的属性。


推荐阅读