Luk*_*uke 3 django django-admin django-taggit django-autocomplete-light
我正在尝试在管理表单上使用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)
Run Code Online (Sandbox Code Playgroud)
在autocomplete_light_registry.py:
import autocomplete_light
from models import MyTag
autocomplete_light.register(MyTag)
Run Code Online (Sandbox Code Playgroud)
我的结构是什么意思admin.py?
如果这是非管理员表单,则该字段将被指定为:
tags = TagField(widget = TagWidget('MyTagAutocomplete'))
Run Code Online (Sandbox Code Playgroud)
如果这是一个非taggit管理表单,我会将以下内容添加到admin模型类:
form = autocomplete_light.modelform_factory(MyTag)
Run Code Online (Sandbox Code Playgroud)
我该如何将两者结合起来?
我是怎么构建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)
Run Code Online (Sandbox Code Playgroud)
autocomplete_light_registry.py
import autocomplete_light
from taggit.models import Tag
autocomplete_light.register(Tag)
Run Code Online (Sandbox Code Playgroud)
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'),
}
Run Code Online (Sandbox Code Playgroud)
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)
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
urls.py
from django.conf.urls import patterns, url
from views import CreateMyModel
urlpatterns = patterns('',
url(r'^create/$', CreateMyModel.as_view()),
)
Run Code Online (Sandbox Code Playgroud)
该快速文档似乎更直截了当比你正在看的文档来了解.
| 归档时间: |
|
| 查看次数: |
2205 次 |
| 最近记录: |