python - Django 中的 Slug 和日期字段问题的唯一问题
问题描述
我对 Django 代码有疑问,我正在使用模型来创建一个替代的创建后页面,并且生成的日期 wiget 是一个文本输入。自动完成功能也不适用于 Slug。有人可以帮助我吗?
模型.py:
from django.db import models
from django import forms
from django.contrib.auth.models import User
from django.urls import reverse
# Categorie
class Category(models.Model):
class Meta:
verbose_name = 'category'
verbose_name_plural = 'categories'
name = models.CharField('Titolo', max_length = 250)
slug = models.SlugField(max_length = 250, unique = True)
desc = models.TextField('Descrizione', max_length=10000, blank=True)
def __str__(self):
return self.name
# Articles
class Article(models.Model):
title = models.CharField('Titolo', max_length=100)
author = models.ForeignKey(User, on_delete=models.CASCADE,)
category = models.ForeignKey (Category, on_delete=models.CASCADE)
desc = models.CharField('Descrizione', max_length=10000, blank=True, )
text = models.TextField('Testo', max_length=10000, blank=True)
image = models.ImageField('Foto', blank=True, upload_to="img")
data = models.DateTimeField('Data di pubblicazione', blank=True)
slug = models.SlugField(max_length = 250, null = True, blank = True, unique=True)
def get_absolute_url(self):
return reverse("admin", args=(str(self.id)))
class Meta: # Order post by date
ordering = ['-data',]
def __str__(self):
return "Ciao"
add_post.html:
{% block content %}
<h1>Add - Post</h1>
<form method="POST">
{% csrf_token %}
{{ form.as_p }}
<button> Go</button>
</form>
{% endblock content %}
解决方案
您必须覆盖 save 方法才能自动创建 slug
from django.utils.text import slugify
class Category(models.Model):
...
def save(self, *args, **kwargs):
self.slug = slugify(self.brand_name)
super(Category, self).save(*args, **kwargs)
这在您更改日期后创建模型时有效,不会改变
data = models.DateTimeField('Data di pubblicazione', auto_now_add=True, blank=True)
每次创建模型并更新模型时,此日期都会更改
data = models.DateTimeField('Data di pubblicazione',auto_now=True blank=True)
推荐阅读
- javascript - 使用标签“多个”修改输入元素的行为
- microsoft-cognitive - 如何使用必应搜索认知服务 API 获得即时答案
- firebase - Firestore onWrite 事件的云功能很少不是由文档更新触发的
- swift - 在 Swift 中提取并转换为字符串
- kubernetes - 有没有办法通过 IP 或 DNS 区分两个打开 hostnetwork 的 pod?
- java - Runtime.getRuntime().exec 与 Phantomjs 不工作
- sql - sql返回空虽然没有错误
- python - 使用 Pymysql Python 3 将 CSV 导入数据库
- git - 如何在本地的 GIT 服务器中使用 HTTPS 协议而不是 SSH?
- xslt - 在共享点列表中应用颜色选择列