标签: django-taggit

django-taggit - 如何显示与每条记录相关的标签

我在我的一个项目上使用django-taggit,我可以保存标签并将其与特定记录绑定.现在的问题是如何显示与每条记录相关的标签?

例如,在我的页面上,我想要显示包含标题和内容的记录,然后在其下面我想显示与该记录关联的标记.

views.py和mytemplate.html中有什么内容?真实的例子将是真正的赞赏.

django django-templates django-views django-taggit

19
推荐指数
2
解决办法
7668
查看次数

django-taggit:使管理员不需要标签

我已经开始使用django-taggit,它似乎符合要求.但对我来说,管理网站仍有问题:

tags在ModelAdmin中包含了这个属性,如下所示:

class MyModel(db.models.Model):
    name = models.CharField(max_length=200)
    tags = TaggableManager()

class MyModelAdmin(admin.ModelAdmin):
    fieldsets = (
        (None, {
            'fields': ('name', 'tags')
        }),
    )
Run Code Online (Sandbox Code Playgroud)

一切都按预期进行.但是当我在管理员中编辑模型时,如果TagField为空,我会收到错误.表单似乎很满意只有一个空白,这导致没有标记被保存(如预期的那样).但是空标记字段会触发错误.

我能做什么?

python django django-taggit

17
推荐指数
1
解决办法
3908
查看次数

使用Django-taggit和django-rest-framework,我无法保存我的标签

我想弄清楚为什么当我提交表单时,我的标签不会保存在我的数据库中.django-rest-framework和Django-taggit也很新,我觉得我做错了:)

首先,在使用rest-framework创建API之前,我使用通用视图(CreateView和UpdateView)来注册/验证我的事件.它工作正常,但我决定进一步尝试构建一个API,因为我现在正在使用Angularjs.

现在我的模型事件已创建,但没有我的标签,我有一些错误.我放了一些代码,之后我会描述我的错误.

事件/ models.py

class Event(models.Model):
[...]

    title = models.CharField(max_length=245, blank=False)
    description = models.TextField(max_length=750, null=True, blank=True)
    start = models.DateTimeField()
    end = models.DateTimeField()
    created_at = models.DateTimeField(editable=False)
    updated_at = models.DateTimeField(editable=False)
    slug = AutoSlugField(populate_from='title', unique=True, editable=False)
    expert = models.BooleanField(choices=MODE_EXPERT, default=0)
    home = models.BooleanField(choices=HOME, default=0)
    nb_participant = models.PositiveSmallIntegerField(default=1)
    price = models.PositiveSmallIntegerField(default=0)
    cancelled = models.BooleanField(default=0)

    user = models.ForeignKey(User, editable=False, related_name='author')
    address = models.ForeignKey('Address', editable=False, related_name='events')
    participants = models.ManyToManyField(User, related_name='participants', blank=True, editable=False,
                                      through='Participants')
    theme_category = models.ForeignKey('EventThemeCategory', unique=True, editable=False)

    tags = TaggableManager(blank=True)

    class Meta:
        db_table = …
Run Code Online (Sandbox Code Playgroud)

django django-taggit django-rest-framework

9
推荐指数
3
解决办法
4007
查看次数

django - django-taggit形式

我想用django-taggit(点击这里).文档(单击此处)讨论了使用ModelForm生成表单,但我已经使用了我想要使用的表单.

假设我有这样的事情:

forms.py

class MyForm(forms.Form):
    ......
    tags = forms.CharField(max_length=200, widget=forms.Textarea)
Run Code Online (Sandbox Code Playgroud)

如何保存来自tags现场的标签?我的是什么views.py?一个真实的例子将是真正的赞赏.

django django-models django-forms django-views django-taggit

8
推荐指数
2
解决办法
5161
查看次数

从taggit获取所有标签

如何从django-taggit获取所有(唯一)标签?我想在侧栏中显示所有标签.目前我能够获得特定帖子的所有标签,但现在我需要在整个博客中获取所有唯一标签.

models.py中的代码:

from django.db import models
from taggit.managers import TaggableManager

# Create your models here.
class Post(models.Model):
    title = models.CharField(max_length=100)
    body = models.TextField()
    created = models.DateTimeField()
    tags = TaggableManager()
Run Code Online (Sandbox Code Playgroud)

python django django-models django-taggit

8
推荐指数
2
解决办法
4261
查看次数

使用django-taggit制作不区分大小写的标签

我在我的模型中添加了tags = TaggableManager(blank = True),但我希望我的标签不区分大小写.为此我看到了一些工作片段,想问一下是否有一种简单的方法可以做到这一点?如果我必须覆盖TaggableManager中的某些方法,请告知我该怎么做?

在此先感谢Arshavski Alexander.

django django-taggit

7
推荐指数
1
解决办法
1635
查看次数

在单个项目中为多个应用程序使用django用户身份验证和taggit

背景:我有5个独立的Django项目,我试图将它们合并到由几个应用程序组成的1个Django项目中.换句话说:projA有appA,projB有appB&projC有appC等我想要1个masterProj有appA,appB和appC.

目前,每个应用程序都连接到它自己的独立数据库(应用程序不共享数据).每个项目都使用Django用户身份验证,Django注册,taggit,配置文件,注释和sorl-thumbnail.

我正在使用Django 1.4并根据此stackoverflow答案设置数据库路由,这样,一旦合并到一个项目中,新组合的Django项目中的每个应用程序仍然能够连接到自己的数据库.这很顺利,但我开始遇到用户身份验证和taggit等问题:

1)如前所述,每个应用程序连接到不同的数据库,每个数据库都有一个名为"auth_user"的表.但是,我发现对auth_user表的所有读/写调用(无论哪个应用程序进行读/写调用)都被路由到默认数据库(在本例中为appA的数据库):

# settings.py:
DATABASES['default'] = DATABASES['appA']
DATABASE_ROUTERS = ['appA.db.DBRouter', 'appB.db.DBRouter', 'appC.db.DBRouter']

# appA/dbrouterA.py (appB, appC routers are identical this, replacing 'appA' with 'appB', etc.)
class DBRouter(object):
    def db_for_read(self, model, **hints):
        if model._meta.app_label == 'appA':
            return 'appA'
        if model._meta.app_label == 'auth':
            return 'appA'
        return None

    def db_for_write(self, model, **hints):
        if model._meta.app_label == 'appA':
            return 'appA'
        if model._meta.app_label == 'auth':
            return 'appA'
        return None
Run Code Online (Sandbox Code Playgroud)

2) 假设我使路由工作,如果用户登录appA,我不希望他们登录到appB.我见过很多人发布了相反的问题(他们希望他们的应用程序共享用户凭据)但有没有人在同一个项目中的几个独立应用程序中成功使用Django用户身份验证?如果是这样,你是怎么做到的?

3)我从我的taggit代码中得到以下错误,但我无法弄清楚如何将"related_name"参数传递给taggit.我正在使用taggit的基本实现 - 而不是子类化任何东西:

# …
Run Code Online (Sandbox Code Playgroud)

python django django-taggit

7
推荐指数
1
解决办法
1223
查看次数

Django-taggit prefetch_related

我正在构建一个基本的时间记录应用程序,我有一个使用django-taggit的待办事项模型.我的Todo模型看起来像这样:

class Todo(models.Model):
    project = models.ForeignKey(Project)
    description = models.CharField(max_length=300)
    is_done = models.BooleanField(default=False)
    billable = models.BooleanField(default=True)
    date_completed = models.DateTimeField(blank=True, null=True)
    completed_by = models.ForeignKey(User, blank=True, null=True)
    tags = TaggableManager()

    def __unicode__(self):
        return self.description
Run Code Online (Sandbox Code Playgroud)

我正在尝试为项目中的所有Todos获取一个唯一标记列表,并且我已经设法使用集合理解来使其工作,但是对于项目中的每个Todo,我必须查询数据库以获取标记.我的理解是:

unique_tags = { tag.name.lower() for todo in project.todo_set.all() for tag in todo.tags.all() }
Run Code Online (Sandbox Code Playgroud)

这很好用,但是对于项目中的每个待办事项,它都会运行一个单独的查询来获取所有标记.我想知道是否有任何方法可以执行类似于prefetch_related的操作以避免这些重复的查询:

unique_tags = { tag.name.lower() for todo in project.todo_set.all().prefetch_related('tags') for tag in todo.tags.all() }
Run Code Online (Sandbox Code Playgroud)

运行前面的代码给我错误:

'tags' does not resolve to a item that supports prefetching - this is an invalid parameter to prefetch_related().
Run Code Online (Sandbox Code Playgroud)

我确实看到有人在这里问了一个非常相似的问题:优化django查询以获取外键和django-taggit关系, …

django django-taggit

7
推荐指数
2
解决办法
1595
查看次数

在南方数据迁移中使用django-taggit?

我有一个使用django-taggit的模型.我想执行一个向此模型添加标记的南数据迁移.但是,在南迁移中无法使用.tags管理器,您必须使用南方orm ['myapp.MyModel'] API而不是普通的Django orm.

执行这样的操作会抛出异常,因为post.tags为None.

post = orm['blog.Post'].objects.latest()
post.tags.add('programming')
Run Code Online (Sandbox Code Playgroud)

是否可以在南数据迁移中使用taggit创建和应用标签?如果是这样,怎么样?

django django-south django-taggit

7
推荐指数
1
解决办法
734
查看次数

编辑表单中的 Django-Taggit

这是一个模型类

class ModelName(models.Model):
  (...)
  pasta = TaggableManager(verbose_name=u'Pasta')
Run Code Online (Sandbox Code Playgroud)

和一个表单模板(正常:P)

{{form.as_p}}

我想让一切都非常干净和有用。但结果是一个 TaggedItem 对象列表 :( :

[<TaggedItem: id: 2 tagged with general >, <TaggedItem: id: 3  tagged with outer >]
Run Code Online (Sandbox Code Playgroud)

而不是像

general, outer
Run Code Online (Sandbox Code Playgroud)

在 Django 中如何时尚?

django django-taggit

6
推荐指数
1
解决办法
2249
查看次数