0
我已經關注了Django ContentTypes,然後我創建了一個用於標記目的的應用程序。多態性中的值錯誤Django模型關聯
Like django-taggit
or tagging
。
tagging.models.py
:
from django.db import models
from django.contrib.contenttypes.models import ContentType
from django.contrib.contenttypes import generic
from django.template.defaultfilters import slugify
class Tag(models.Model):
name = models.CharField(max_length=100)
slug = models.SlugField(unique=True, max_length=100)
def __unoicode__(self):
return self.name
def save(self, *args, **kwargs):
self.slug = slugify(self.name)
super(Tag, self).save(*args, **kwargs)
class TaggedItem(models.Model):
tag = models.ForeignKey(Tag)
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
object = generic.GenericForeignKey('content_type', 'object_id')
def __unicode__(self):
return self.tag.name
blog.models.py
:
class Article(models.Model):
title = models.CharField(max_length=250)
content = models.TextField()
##
tags = generic.GenericRelation(TaggedItem)
blog.views.py
:
article = Article.objects.create(user=request.user)
article.title = form.cleaned_data['title']
article.body = form.cleaned_data['body']
##
tag_names = form.cleaned_data['tags'].split()
for tag_name in tag_names:
tagged = TaggedItem(object=article, tag=tag_name)
tagged.save()
article.save()
所以,當我挽救或創造新的article
我會得到這個錯誤:
Cannot assign "u'browser'": "TaggedItem.tag" must be a "Tag" instance.
瀏覽器是標籤字符串!
我覺得這個印刷錯誤,因爲我已經聲明tag
爲ForeignKey
關係在TaggedItem
...
這是什麼創建的對象? – 2011-04-03 21:32:56
'get_or_create'方法總是返回對象加布爾值來顯示它是否是新創建的。既然你沒有真正使用它,你可以用'_'代替'created'來顯示它是一個拋棄變量。 – 2011-04-03 21:44:13