请帮助解决问题。我有一组对象:
class Entry(models.Model):
user = models.ForeignKey(
User,
verbose_name=u"Пользователь",
blank=True,
null=True,
)
title = models.CharField(
verbose_name=u"Название",
max_length=100,
)
video_url = models.URLField(
verbose_name=u"Адрес видео",
max_length=100,
null=True,
blank=False,
)
description = HTMLField(
verbose_name=u'Описание',
max_length=50000,
default=None,
blank=True,
)
views = models.IntegerField(
verbose_name=u'Количество просмотров',
default=0,
null=False,
blank=True,
)
likes = models.IntegerField(
verbose_name=u'Количество лайков',
default=0,
null=False,
blank=True,
)
date = models.DateTimeField(
verbose_name=u'Дата создания',
default=datetime.now(),
#auto_now=True,
)
last_edit_date = models.DateTimeField(
verbose_name=u'Дата последнего редактирования',
default=datetime.now(),
auto_now=True,
)
is_active = models.BooleanField(
verbose_name=u'Активно',
default=True,
)
is_delete = models.BooleanField(
verbose_name=u'Удалено админом',
default=False,
)
tags = models.ManyToManyField(Tag.title)
我想将每个对象与多个标签相关联。这个模型是为标签编写的:
class Tag(models.Model):
title = models.CharField(
verbose_name=u"Название",
max_length=100,
)
description = HTMLField(
verbose_name=u'Описание',
max_length=50000,
default=None,
blank=True,
)
date = models.DateTimeField(
verbose_name=u'Дата создания',
default=datetime.now(),
)
last_edit_date = models.DateTimeField(
verbose_name=u'Дата последнего редактирования',
default=datetime.now(),
auto_now=True,
)
is_active = models.BooleanField(
verbose_name=u'Активно',
default=True,
)
class Meta:
verbose_name = u"""тег"""
verbose_name_plural = u"""теги"""
问题是控制台在任何输入错误上显示以下消息:
File "/home/kalinins/.virtualenvs/kinopom_project/kinopom_env/local/lib/python2.7/site-packages/django/db/models/loading.py", line 75, in _populate
self.load_app(app_name, True)
File "/home/kalinins/.virtualenvs/kinopom_project/kinopom_env/local/lib/python2.7/site-packages/django/db/models/loading.py", line 99, in load_app
models = import_module('%s.models' % app_name)
File "/home/kalinins/.virtualenvs/kinopom_project/kinopom_env/local/lib/python2.7/site-packages/django/utils/importlib.py", line 40, in import_module
__import__(name)
File "/home/kalinins/.virtualenvs/kinopom_project/kinopom/kinopom/models.py", line 41, in <module>
class Entry(models.Model):
File "/home/kalinins/.virtualenvs/kinopom_project/kinopom/kinopom/models.py", line 94, in Entry
tags = models.ManyToManyField(Tag.title)
AttributeError: type object 'Tag' has no attribute 'title'
请帮忙解决
答案 0 :(得分:1)
删除行.title
中的tags = models.ManyToManyField(Tag.title)
ManyToManyField只需要一个模型,并且你给它一个这个模型的属性,这个属性不起作用,因为Tag是一个类而不是一个实例。
如果您希望标记在显示时显示标题,只需编写 unicode 方法即可。
class Tag(models.Model):
#your fields here
def __unicode__(self):
return u"{0}".format(self.title)