簡體   English   中英

在 Django 中傳遞多個參數

[英]Pass multiple parameters in Django

class Article(models.Model):
      Title     = models.CharField(max_length = 255)
      writing       = models.TextField()
      category  = models.CharField(max_length = 225)
      published = models.DateTimeField(auto_now_add=True)
      updated       = models.DateTimeField(auto_now=True)
      slug      = models.SlugField(blank=True, editable=False)

      def save(self):
         self.slug = slugify(self.Title)
         super().save()

      def get_absolute_url(self):
         url_slug = {'slug':self.slug}
         return reverse('artikel:ArticleDetail', kwargs = url_slug)

      def __str__(self):
         return "{}.{}".format(self.id, self.Title)

我想使用 django 建立一個簡單的網站,它可以通過表格發布一些文章。 問題是我如何在一篇文章中發布多個類別? 這是下面的form.py。

from .models import Article
from django.forms import ModelForm 

class ArticleForm(ModelForm):
   class Meta:
      model = Article
      fields = [
        'title',
        'writing',
        'category',
       ]

您可以使用ManyToManyField將您的帖子鏈接到多個類別,例如:

class Category(models.Model):
    name = models.CharField(max_length=128, unique=True)

    def __str__(self):
        return self.name

class Article(models.Model):
    title = models.CharField(max_length=255)
    writing = models.TextField()
    category = models.ManyToManyField(Category)
    published = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)
    slug = models.SlugField(blank=True, editable=False)

    def save(self, *args, **kwargs):
        self.slug = slugify(self.title)
        super().save()

    def get_absolute_url(self):
        return reverse('artikel:ArticleDetail', kwargs={'slug': self.slug})

      def __str__(self):
         return '{}.{}'.format(self.id, self.title)

話雖這么說,已經有一些包。 例如, django-taggit [GitHub] ,您可以使用以下命令安裝它:

pip3 install django-taggit

並將'taggit'包含到INSTALLED_APPS列表 [Django-doc] 中

# settings.py

INSTALLED_APPS = [
    # …,
    'taggit',
    # …
]

然后在您的模型中,您可以將TaggableManager添加到 model:

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


class Article(models.Model):
    title = models.CharField(max_length=255)
    writing = models.TextField()
    categories = TaggableManager()
    published = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)
    slug = models.SlugField(blank=True, editable=False)

    def save(self, *args, **kwargs):
        self.slug = slugify(self.title)
        super().save()

    def get_absolute_url(self):
        return reverse('artikel:ArticleDetail', kwargs={'slug': self.slug})

      def __str__(self):
         return '{}.{}'.format(self.id, self.title)

正如文檔所指定的,它帶有一個 表單字段,允許編寫空格分隔和逗號分隔的標簽。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM