Python &引用;对象没有属性'_州'&引用;错误
我正在开发Django应用程序,我有以下错误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
'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。下次我会解决这个问题,因为现在的首要任务是至少让它工作起来。