首页 > 解决方案 > 如何在我的博客中使用 ManyToManyField 作为标签

问题描述

我想tags在我的文章中添加,当用户点击某个标签时,它将显示所有具有该标签的文章,所以我创建标签模型然后我添加ManyToManyField字段mobile model

那么接下来呢?我的意思是当我在管理面板中添加一些标签时如何使用标签以及如何为每个标签创建 html 页面?

模型.py:

# Tag model 

class Tag(models.Model):
    PostTagName = models.CharField(max_length=100)
    slug = models.SlugField(default="",blank=True,unique=True,editable=True)
    def save(self, *args, **kwargs):
        if not self.id or not self.slug:
            super(Tag, self).save(*args, **kwargs)
            self.slug = slugify(f"{self.PostTagName}")
        super(Tag, self).save(*args, **kwargs)

    def __str__(self):
        return self.PostTagName

# mobile model

class Mobile(models.Model):
    title = models.CharField(max_length=100,default="")
    name = models.CharField(max_length=100,default="")
    app_contect = RichTextField(blank=True,null=True)
    app_image = models.ImageField(upload_to='images/',null=True, blank=True)
    post_date = models.DateTimeField(auto_now_add=True, null=True, blank=True)
    post_tag = models.CharField(max_length=50,default="",choices = MOBILE_SECTION)
    tag = models.ManyToManyField(Tag)

    NETWORK = models.TextField(max_length=240,default="")
    LAUNCH = models.TextField(max_length=240,default="")
    BODY = models.TextField(max_length=240,default="")
    DISPLAY = models.TextField(max_length=240,default="")
    PLATFORM = models.TextField(max_length=240,default="")
    MEMORY = models.TextField(max_length=240,default="")
    MAIN_CAMERA = models.TextField(max_length=240,default="")
    SELFIE_CAMERA = models.TextField(max_length=240,default="")
    SOUND = models.TextField(max_length=240,default="")
    COMMS = models.TextField(max_length=240,default="")
    FEATURES = models.TextField(max_length=240,default="")
    BATTERY = models.TextField(max_length=240,default="")
    Colors = models.TextField(max_length=240,default="")
    Price = models.CharField(max_length=240,default="")
    objects = SearchManager()
    slug = models.SlugField(default="",blank=True,unique=True,editable=True)
    def save(self, *args, **kwargs):
        if not self.id or not self.slug:
            super(Mobile, self).save(*args, **kwargs)
            self.slug = slugify(f"{self.title}")
        super(Mobile, self).save(*args, **kwargs)

    def get_image(self):
        if self.app_image and hasattr(self.app_image, 'url'):
            return self.app_image.url
        else:
            return '/path/to/default/image'

    def __str__(self):
        return self.name

    class Meta:
        ordering = ('-post_date',)

标签: djangodjango-modelsdjango-templates

解决方案


推荐阅读