在Django中使用ModelForm创建对象的最佳方法是什么?

时间:2013-12-28 16:14:49

标签: python django

我在博客中有一个文章模型。

class Article(models.Model):
    number = models.IntegerField()
    title = models.CharField(max_length=200, unique=True)
    slug = models.SlugField(max_length=100, unique=True, editable=False)

    pub_date = models.DateTimeField(auto_now_add=True)

    cut_text = models.TextField(blank=True, editable=False)
    text = models.TextField()

    tags = models.ManyToManyField(Tag, blank=True)

我想在admin中使用TextInput for Tags。所以我使用名为TagManager的jQuery插件实现了ModelForm。

class ArticleAdminForm(forms.ModelForm):
    tags = forms.CharField(required=False, widget=widgets.TextInput(attrs={'name': 'tags',
                                                                           'class': 'tm-input'}))

    def clean_tags(self):
        tags = self.data.get('hidden-tags')

        clean_tags = []

        tags = [tag for tag in tags.split(',') if tags]

        for tag_name in tags:
            tag, created = Tag.objects.get_or_create(name=tag_name)
            tag.save()
            clean_tags.append(tag)

        return clean_tags

    class Media:
        css = {
            'all': ('css/admin.css', 'css/tagmanager.css'),
        }

        js = ('js/jquery-2.0.3.js', 'js/tagmanager.js', 'js/admin.js')

    class Meta:
        model = Article

这一切都运行得很好,但现在我想知道使用clean函数创建模型对象还是有更好的方法可以做到这一点?

0 个答案:

没有答案