Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python &引用;对象没有属性'_州'&引用;错误_Python_Django - Fatal编程技术网

Python &引用;对象没有属性'_州'&引用;错误

Python &引用;对象没有属性'_州'&引用;错误,python,django,Python,Django,我正在开发Django应用程序,我有以下错误 'Category' object has no attribute '_state' 我的模特是 class Blog(models.Model): BlogMeta = models.CharField(max_length=200) BlogTitle = models.CharField(max_length=100) BlogContent = models.TextField() BlogCategory

我正在开发Django应用程序,我有以下错误

'Category' object has no attribute '_state'
我的模特是

class Blog(models.Model):
    BlogMeta = models.CharField(max_length=200)
    BlogTitle = models.CharField(max_length=100)
    BlogContent = models.TextField()
    BlogCategory = models.CharField(max_length=300)
    BlogTags = models.CharField(max_length=300)
    BlogDate = models.DateField()
    def __unicode__(self):
        return self.BlogTitle
    def save(self):
        self.BlogDate = datetime.datetime.now()
        Categorylist = re.findall(r'\w+',self.BlogCategory)
        TagList = re.findall(r'\w+', self.BlogTags)
        #Get already existing tags and category
        dbCategoryList = Category.objects.all()
        dbTagsList = Tags.objects.all()
        clisflag = False
        tlisflag = False
        #check if categories and tags in new blog exists previously or not.
        for clis in Categorylist:
            for dbclis in dbCategoryList:
                if (clis == dbclis.CategoryName):
                    clisflag = True
                    break
                else:
                    continue

            if not clisflag:
                createCategory = Category(clis)
                createCategory.save()
            clisflag = False

        for tlis in TagList:
            for dbtlis in dbTagsList:
                if(tlis == dbtlis.TagName):
                    tlisflag = True
                    break
                else:
                    continue
            if not tlisflag:
                createTag = Tags(tlis)
                createTag.save()
            tlisflag = False

class Tags(models.Model):
    TagName = models.CharField(max_length=20)
    TagDesc = models.TextField(null=True)
    def __unicode__(self):
        return self.TagName
    def __init__(self,name):
        self.TagName = name
        self.TagDesc = ""
class Category(models.Model):
    CategoryName = models.CharField(max_length=20)
    CategoryDesc = models.TextField(null=True)
    def __unicode__(self):
        return self.CategoryName
    def __init__(self, name):
        self.CategoryName = name
        self.CategoryDesc = ""
在新的博客文章中,类别被视为逗号分隔的值,如果遇到新的类别,则会将其添加到数据库中。 标签也是如此

我不清楚这件事,你能告诉我正确的方向吗。
非常感谢

您没有运行
模型。你必须这样做

至少,您需要在
Category.\uuu init\uuu()中有一行类似于
super(Category,self)。\uu init

实际上,您有更重要的设计问题。属性中不应包含类名;它应该是
Category.name
,而不是
Category.CategoryName
Category.\uuuu init\uuuu
应该使用关键字参数,而不是它自己的特殊参数。描述应为
blank=True
,而不是
null=True
。您不需要
类别

以下是您正在做的事情的一个稍微整洁的版本:

class Blog(models.Model):
    meta = models.CharField(max_length=200)
    title = models.CharField(max_length=100)
    content = models.TextField()
    categories = models.CharField(max_length=300)
    tags = models.CharField(max_length=300)
    date = models.DateField()

    def __unicode__(self):
        return self.title

    def save(self):
        self.date = datetime.datetime.now()
        category_list = re.findall(r'\w+', self.categories)
        tag_list = re.findall(r'\w+', self.tags)
        #check if categories and tags in new blog exists previously or not.
        db_categories = Category.objects.all()
        for clis in category_list:
            for dbclis in db_categories:
                if clis == dbclis.name:
                    break
            else:
                new_category = Category(name=clis)
                new_category.save()

        db_tags = Tags.objects.all()
        for tlis in tag_list:
            for dbtlis in db_tags:
                if tlis == dbtlis.name:
                    break
            else:
                new_tag = Tags(name=tlis)
                new_tag.save()


class Tags(models.Model):
    name = models.CharField(max_length=20)
    desc = models.TextField(blank=True)
    def __unicode__(self):
        return self.name


class Category(models.Model):
    name = models.CharField(max_length=20)
    desc = models.TextField(blank=True)
    def __unicode__(self):
        return self.name

不过,这仍然很难看。首先也是最重要的是,
标签
类别
(重命名为
类别
)应该是关系,而不是纯文本。

非常感谢!,事实上,这是我第一次编写python/django代码,所以对大多数事情一无所知。我也会记住你的建议。再次感谢!我会把它联系起来,但在这一点上,我不太了解django。下次我会解决这个问题,因为现在的首要任务是至少让它工作起来。