python - prepopulated_fields 导入数据库时不会触发
问题描述
我正在使用 prepopulated_fields
prepopulated_fields = {'slug': ('name', 'mark_steel')}
,它在手动安装时可以在管理面板中使用。但是在批量写入数据库时它不起作用。
有什么解决方案可以解决这个问题吗?
解决方案
如果我正确理解了您的问题...您可以覆盖模型上的 save 方法并添加一些逻辑以自动从 name 和 mark_down 字段创建一个 slug ,而无需手动创建一个。
from django.db import models
from django.template.defaultfilters import slugify
Class TestModel(models.Model):
name = models.CharField()
mark_steel = models.CharField()
slug = models.SlugField()
def save(self, *args, **kwargs):
if self.name and self.mark_steel: # If both have a value, create a slug from both fields
self.slug = '-'.join((slugify(self.name), slugify(self.mark_steel)))
elif self.name: # If name alone have a value, create a slug from name field
self.slug = slugify(self.name)
elif self.mark_steel: # If mark_steel alone have a value, create a slug from mark_steel
self.slug = slugify(self.mark_steel)
super(Post, self).save(*args, **kwargs)
推荐阅读
- c - 如何从字符串创建二叉搜索树?
- java - 如何检查单击了哪个 RecyclerView
- html - 调整浏览器屏幕大小时,如何将图像放在段落下方?
- python - 如何在 for 循环中生成具有不同名称的新数组?
- python - 从用户那里获取整数输入来计算 Python 函数
- python - 避免
和 被 Spacy 解析 - mysql - JavaFX 如何在另一个项目中使用我自己的 .jar 库?
- c - 如何修改 BFS 算法以在给定条件下找到 2 个顶点之间的路径?
- vue.js - 添加弹出模式以 vuetify vue.js
- python - Modifying dictionary inside function without return statement