我正在尝试在管理表单上使用autocomplete_light和taggit.
我读过关于将自动完成光taggit的文档在这里,并自动完成光在管理整合文档这里.但似乎很少(或没有)讨论同时做两件事.
到目前为止我得到了什么.
在models.py
:
from django.db import models from taggit.managers import TaggableManager from taggit.models import TagBase, GenericTaggedItemBase class MyTag(TagBase): description = models.CharField(max_length = 250, blank = True, null = True) class MyTagThroughModel(GenericTaggedItemBase): tag = models.ForeignKey(MyTag, related_name = "tagged_items") class MyModel(models.Model): Name = models.CharField(max_length = 200) ... tags = TaggableManager(through = MyTagThroughModel)
在autocomplete_light_registry.py
:
import autocomplete_light from models import MyTag autocomplete_light.register(MyTag)
我的结构是什么意思admin.py
?
如果这是非管理员表单,则该字段将被指定为:
tags = TagField(widget = TagWidget('MyTagAutocomplete'))
如果这是一个非taggit管理表单,我会将以下内容添加到admin模型类:
form = autocomplete_light.modelform_factory(MyTag)
我该如何将两者结合起来?
我是怎么构建admin.py的?
以下是自动填充标签的示例.它向您展示了autocomplete_light和taggit如何在管理员和非管理员表单上工作.
models.py
from django.db import models from taggit.managers import TaggableManager class MyModel(models.Model): name = models.CharField(max_length = 200) tags = TaggableManager(blank=True)
autocomplete_light_registry.py
import autocomplete_light from taggit.models import Tag autocomplete_light.register(Tag)
forms.py
from django import forms import autocomplete_light from autocomplete_light.contrib import taggit_tagfield from models import MyModel class MyModelForm(forms.ModelForm): tags = taggit_tagfield.TagField(widget=taggit_tagfield.TagWidget('TagAutocomplete')) class Meta: model = MyModel widgets = { 'tags': autocomplete_light.TextWidget('TagAutocomplete'), }
admin.py
from django.contrib import admin import autocomplete_light from models import MyModel from forms import MyModelForm class MyModelAdmin(admin.ModelAdmin): form = MyModelForm model = MyModel admin.site.register(MyModel, MyModelAdmin)
views.py
from django.views.generic.edit import CreateView from models import MyModel from forms import MyModelForm class CreateMyModel(CreateView): model = MyModel form_class = MyModelForm
urls.py
from django.conf.urls import patterns, url from views import CreateMyModel urlpatterns = patterns('', url(r'^create/$', CreateMyModel.as_view()), )
该快速文档似乎更直截了当比你正在看的文档来了解.