我正在学习 Django,我的问题基本上很简单,但我没能在谷歌上找到答案。怎么了:我有一个模型课日历:
class Calendar(models.Model):
name = models.CharField(max_length=63, name="name", help_text="Название")
description = models.TextField(max_length=255, name="description", help_text="Описание")
creator = models.CharField(max_length=63, name='author', help_text='Автор')
path = models.CharField(max_length=63, name='path', help_text='Путь по которому получают этот календарь',
unique=True)
我需要创建此类的对象并写入数据库。除了路径之外的所有字段都是从表单中获取的,路径是随机生成的。
不同意其他答案
使用
save
或pre_save
。如果字段可以更改,那么在方法中
get_object
如果新对象在表单中调用信号。一般来说,信号是一个更灵活的解决方案,这个逻辑将位于模型旁边。
不太灵活的
save
选项,如果需要该字段,则必须从表单中删除该字段。继承和重载的明显解决方案
__init__
是错误的!!!由于每次从数据库中卸载到内存中,都会创建一个此类的实例,并且路径会发生变化。(在管理面板中更新页面时清晰可见,每次新路径时)
解决方案是这样的(views.py 文件)
__models.py__
不同意@BlueScreen 的回答。使用
__init__
方法覆盖选项:generate_random_path
是您的函数,它将生成一个随机path
. 从数据库加载时,数据库中的self.path
值会进入其中,否则会随机生成一个。为了可靠性,您可以NOT NULL
为字段添加规则到数据库