如何在Djang中将标签连接到标签云的帖子

2024-06-16 18:58:02 发布

您现在位置:Python中文网/ 问答频道 /正文

在新帖子中生成的HashTags将连接到数据库中的每个其他帖子。我需要他们只连接到具有相同的标签的帖子,然后实现一个标签云。 出了点问题,当我添加一个新的帖子并创建了一个新的标签,甚至更新了一个旧的标签,如果我去管理部分检查,标签的连接到数据库中的所有帖子。在

我做错什么了。在这件事上有一段时间了。在

这是我的代码:

我的模型.py在

from django.db import models

# Create your models here.
from user_profile.models import User

class Post(models.Model):
    # postad_category = models.ForeignKey(Category)
    # postad_name = models.CharField(max_length=250)
    user = models.ForeignKey(User)
    text = models.CharField(max_length=300)
    created_date = models.DateTimeField(auto_now=True)
    country = models.CharField(max_length=30, default="Global")
    # postad_logo = models.CharField(max_length=1000)
    is_active = models.BooleanField(default=True)
    is_favorite = models.BooleanField(default=False)

    def __str__(self):
        return self.name

class HashTag(models.Model):
    """HashTag model"""
    name = models.CharField(max_length=64, unique=True)
    post = models.ManyToManyField(Post)

    def __str__(self):
        return self.name

我的视图.py在

^{pr2}$

Tags: namefrompyimportself数据库truedefault
2条回答
from django.db import models
from user_profile.models import User

class Post(models.Model):
    # postad_category = models.ForeignKey(Category)
    # postad_name = models.CharField(max_length=250)
    user = models.ForeignKey(User)
    text = models.CharField(max_length=300)
    created_date = models.DateTimeField(auto_now=True)
    country = models.CharField(max_length=30, default="Global")
    # postad_logo = models.CharField(max_length=1000)
    is_active = models.BooleanField(default=True)
    is_favorite = models.BooleanField(default=False)

    def __str__(self):
        # This should be text, not name.
        return self.text

class HashTag(models.Model):
    """HashTag model"""
    name = models.CharField(max_length=64, unique=True)
    post = models.ManyToManyField(Post)

    def __str__(self):
        return self.name



# Sometimes get or create dosnt work properly

from django.shortcuts import render
from django.core.exceptions import ObjectDoesNotExist


class PostPost(View):
    """Post - post form available on page /user/<username> URL"""

    def post(self, request, username):

        form = PostForm(self.request.POST)
        if form.is_valid():
            # post = form.save(commit = False)
            # post.user = request.user
            user = User.objects.get(username=username)
            post = Post(text=form.cleaned_data['text'],
                user=user,
                # country=form.cleaned_data['country']
                )
            post.save()
            words = form.cleaned_data['text'].split(" ")
            for word in words:
                if word[0] == "#":
                    try:
                        hashtag = HashTag.objects.get(name=word[1:])
                        created = False
                    except ObjectDoesNotExist:
                        hashtag, created= HashTag.objects.create(name=word[1:])
                    print(hashtag,'\n', created)
                    hashtag.post.add(post)
        return HttpResponseRedirect('/user/'+username)

所以,谢谢大家。但我尝试了很多方法,直到我得到了一个新版本的django并且不再使用相同的代码之前,它没有起到任何作用。我认为问题出在django版本中。在

相关问题 更多 >