加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Django自动完成light,taggit和管理界面

发布时间:2020-12-20 11:32:46 所属栏目:Python 来源:网络整理
导读:我正在尝试在管理表单上使用autocomplete_light和taggit. 我已经阅读了有关集成autocomplete light和taggit here的文档, 以及关于在管理员here中集成自动完成灯的文档.但似乎很少(或没有)讨论同时进行两者. 到目前为止我得到了什么. 在models.py中: from dj
我正在尝试在管理表单上使用autocomplete_light和taggit.

我已经阅读了有关集成autocomplete light和taggit here的文档,
以及关于在管理员here中集成自动完成灯的文档.但似乎很少(或没有)讨论同时进行两者.

到目前为止我得到了什么.

在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)

我该如何将两者结合起来?

解决方法

How am I meant to structure 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()),)

与您正在查看的文档相比,quick docs似乎更容易理解.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读