标签: django-taggit

如何为django-taggit创建列表和详细信息视图?

我有一个相当简单的模型,使用Django Taggit进行标记.

一切都很好,但现在我想扩展一些功能,我有点困惑.

我想要的是两种观点.

一个显示系统中的所有标签.一个显示我的应用程序中具有特定标记的所有内容.

对我来说有意义的是为每个视图执行以下操作.

在views.py中为myapp

  1. 所有标签

    来自myapp.models导入App

    来自taggit.models导入标签

    class TagList(ListView):

    msgstr"""获取db中的所有标签"""

    queryset = Tag.objects.all()
    template_name = "myapp/TagList.html"
    paginate_by = 10
    
    Run Code Online (Sandbox Code Playgroud)
  2. 标签的所有内容

    来自myapp.models导入App

    来自taggit.models导入标签

    class TaggedList(ListView):"""获取标签的所有内容"""

    template_name = "myapp/TaggedList.html"
    
    def get_object(self):
        return get_list_or_404(App, tag__iexact=self.kwargs['tag'])
    
    Run Code Online (Sandbox Code Playgroud)

我是不是已经失去了理智,还是那么容易?顺便说一下,我正在使用泛型类视图.

谢谢您的帮助.戴夫

django django-views django-taggit

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

django-taggit在使用UUID时不起作用

我在这里浏览了自定义文档https://django-taggit.readthedocs.io/en/latest/custom_tagging.html#genericuuidtaggeditembase

我正在使用以下代码,当我通过django admin保存产品时,表已正确填充,但是当我读取产品时,标签将显示为None

catalog / models.py

from django.db import models
from django.db.models import ImageField
from django.contrib.auth.models import User
from django.utils.translation import ugettext_lazy as _

from taggit.managers import TaggableManager
from taggit.models import GenericUUIDTaggedItemBase, TaggedItemBase

from common.models import ModelBase
from customer.models import ApplicationUser
from order_quick.settings import APPLICATION_CURRENCY_SYMBOL


class TaggedItem(GenericUUIDTaggedItemBase, TaggedItemBase):
    class Meta:
        verbose_name = _("Tag")
        verbose_name_plural = _("Tags")


class Product(ModelBase):
    supplier = models.ForeignKey(ApplicationUser, on_delete=models.DO_NOTHING)
    name = models.CharField(max_length=255)
    description = models.CharField(max_length=255)
    image = ImageField(upload_to='images/products/', blank=True, null=True)
    cost_price = models.DecimalField(max_digits=9,
                                     decimal_places=2,
                                     verbose_name="Cost Price …
Run Code Online (Sandbox Code Playgroud)

python django django-taggit

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

Django Taggit - 标签关联未从自定义管理表单中保存

在这里发疯......从外壳内,我可以这样做:

product.tags.add("a_new_tag")
Run Code Online (Sandbox Code Playgroud)

标签被添加到数据库中,标签与产品的关联工作正常。(即当我做Product.objects.filter(tags__name__in=["a_new_tag"]相应的产品时吐出来)

我需要做的是在处理表单时在管理中添加一些标签。

这是我的表单代码(阅读第 4 行和第 5 行中的注释):

class ProductForm(ModelForm):
        def save(self, commit=True):
            product = super(ProductForm, self).save(commit=False)
            product.type="New Type to Confirm Info is being Saved Correctly" //this is saved to the product.
            product.tags.add('a_new_tag_1') //the tag is saved to the taggit db, but the association with the product isn't kept.
            product.save()
            self.save_m2m()
            return m
Run Code Online (Sandbox Code Playgroud)

我尝试在管理类中进行保存,但这也不起作用:

class ProductAdmin(admin.ModelAdmin):
    form = ProductForm
    def save_model(self, request, obj, form, change):
        obj.type="new_type" //this works 
        obj.tags.add("a_new_tag_2") //tag association not saved
        obj.save()
        form.save_m2m()
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?提前致谢!

forms django admin django-taggit

5
推荐指数
1
解决办法
1487
查看次数

如何限制 django-taggit 仅接受小写单词?

我正在使用 django-taggit。我希望所有标签都小写,还设置标签编号的范围(比如在 1 到 5 之间,就像 stackoverflow 一样)。有什么办法可以用 django-taggit 轻松做到这一点吗?谢谢!

tags django django-taggit

5
推荐指数
1
解决办法
1641
查看次数

django-taggit:有没有办法减少数据库查询?

说我有一个模型:

class Entry(models.Model):
    ...
    tags = TaggableManager()
Run Code Online (Sandbox Code Playgroud)

当我在模板中迭代Entry.objects.all()时,entry.tags.all会再向数据库生成一个查询.是否可以减少查询数量?使用像select_related()这样的东西(我知道它不会起作用,因为django-taggit使用了很多关系,但我确信应该有一种方法可以选择所有带有相关标签的条目)

django django-taggit

5
推荐指数
1
解决办法
663
查看次数

获取存在某种外键的对象

我正在使用django-taggit创建一个应用程序,不仅存储待办事项,还存储信息项.可以标记待办事项和信息项.

当我为待办事项提取标签列表时,我运行以下查询:

action_tags = Tag.objects.order_by('name').filter(action__complete=False).annotate(action_count=Count('action'))
Run Code Online (Sandbox Code Playgroud)

这给了我所有标签,其中有不完整的待办事项.它还给了我不完整的待办事项数.

对于信息项,没有"完整"字段; 信息项只是"是".所以我想编写一个查询,提取至少有一个信息项的所有标签.怎么写的?

django django-taggit

5
推荐指数
1
解决办法
2597
查看次数

Django-taggit 如何获取所有标签

我可以在模板中像这样一一获取所有标签的名称

{% for tag in blog.tags.all %}
    <span class="label label-default">{{ tag.name }}</span>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

我可以从这样的表单中获取输入{{ form.tags }},它给了我:

<input id="id_tags" name="tags" type="text" value="xxx,y y y,zzz">
Run Code Online (Sandbox Code Playgroud)

但是我想像这样在我的模板中自定义我的输入

<input id="id_tags" class="form-control" maxlength="50" name="title" type="text" placeholder="tags" value="{{ form.tags }}">
Run Code Online (Sandbox Code Playgroud)

如何设置输入的值=“ {{ form.tags }}”?

django django-taggit

5
推荐指数
1
解决办法
1060
查看次数

django-taggit on models with UUID as pk throwing out of range on save

I have models that uses UUID as its PK

class Foo(models.Model):        
    foo_id = models.UUIDField(  
        primary_key=True,             
        default=uuid.uuid4,           
        editable=False                
    )  
    tags = TaggableManager()        
Run Code Online (Sandbox Code Playgroud)

When I go and try to add a new tag

f = Foo.objects.latest('pk')
f.tags.add("testing")
Run Code Online (Sandbox Code Playgroud)

I get DataError: integer out of range

When I import pdb on the cursor to view the SQL going in I see this.

(Pdb) params                                                                                                              
(1, 287082253891563438098836942573405313042, 9)                                                                           
(Pdb) sql                                                                                                                 
'INSERT INTO "taggit_taggeditem" ("tag_id", "object_id", "content_type_id") VALUES (%s, %s, %s) RETURNING "taggit_taggedit
m"."id"'    
Run Code Online (Sandbox Code Playgroud)

That long …

django django-taggit django-contenttypes

5
推荐指数
2
解决办法
784
查看次数

django-taggit - 根据发布的日期vlog显示所有标签

使用django-taggit-templatetags2,我可以在模板页面中显示与测试vlog关联的所有标签.

我存储在数据库中的vlogs尚未发布给公众(仅在特定日期之后显示),因此我可以在数据库中存储大量的vlog详细信息,然后在某一天自动释放每个单独的视频博客(例如星期二)每周).

这意味着django-taggit-templatetags2显示的所有代码都{% for tag in vlog_tags %}将包含vlog条目的标签,这些标签尚未在vlog中显示给用户但存储在db中.

如何只显示vlog_date_published不大于的vlog条目的标签和计数now可能存在用于已发布和尚未发布的vlog条目的相同标记.所以这应该考虑到标签的显示.

这是我的模型代码:

from taggit.managers import TaggableManager

class VlogDetails(models.Model):
    ....
    vlog_date_published = models.DateField(null=False, blank=False, default=datetime.now, help_text='The date the vlog video will be made public.')
    vlog_tags = TaggableManager(blank=True, help_text='To make a new tag, add a comma after the new tag name.')
    ....
Run Code Online (Sandbox Code Playgroud)

这是显示所有标签模板代码:

    {% load taggit_templatetags2_tags %}

    {% get_taglist as vlog_tags %}

    {% for tag in vlog_tags %}
        {% if tag.num_times > 0 …
Run Code Online (Sandbox Code Playgroud)

python django django-taggit

5
推荐指数
1
解决办法
263
查看次数

如何在 django 中使用 django-taggit 按标签过滤帖子

目前,我仍在学习 Django 并使用 Django 2.2 创建我的博客。但不知何故,当我使用 django-taggit 时出现错误。

如何通过标签过滤帖子?

我已阅读文档,但没有完全介绍如何将其实现到实际项目中。

这是我的代码:

我尝试了几种不同的方法,仍在 StackOverflow 中搜索,但仍然没有答案。

的结果与 的结果/blog/tag/post-tagged相同/blog。那么我该如何过滤它views.py呢?或者也许来自blog.html

所以结果/blog/tag/post-tagged仅来自标记的帖子。

这是我的代码:

models.py:

...

from taggit.managers import TaggableManager



"Post Model"
class Post(models.Model):
    author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    slug = models.SlugField(max_length=100, null=True, blank=True, unique=True)
    title = models.CharField(max_length=200)

    tags = TaggableManager(blank=True)
...
Run Code Online (Sandbox Code Playgroud)

views.py:

def blogIndex(request):
    posts = Post.objects.all().order_by("-created_date")[0:4]
    context = {"posts": posts,}
    return render(request, 'blog.html',  context)



def Tagging(request, slug):

    tags = Tag.objects.filter(slug=slug)
    posts = Post.objects.all().order_by("-tags") …
Run Code Online (Sandbox Code Playgroud)

django django-templates django-models django-taggit

5
推荐指数
1
解决办法
4513
查看次数