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

 染伊沐2010 发布于 2023-02-04 15:51

我正在尝试在管理表单上使用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)

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

1 个回答
  • 我是怎么构建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()),
    )
    

    该快速文档似乎更直截了当比你正在看的文档来了解.

    2023-02-04 15:52 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有