2014-11-08 38 views
0

請幫忙解決問題。我有一組對象:如何製作多選字段?

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' 

請幫助解決

回答

1

刪除在該.titletags = models.ManyToManyField(Tag.title)
ManyToManyField只是想要一個模型,並且你給它一個這個模型的屬性,因爲標籤是一個類而不是一個實例,所以這個屬性不起作用。
如果您希望標籤在顯示時顯示標題,只需編寫unicode方法。

class Tag(models.Model): 
    #your fields here 

    def __unicode__(self): 
     return u"{0}".format(self.title)