首页 > 解决方案 > 是否可以让 TextFields 的默认值引用 txt 文件?

问题描述

我正在构建一个允许用户在 Django 中发送模板化电子邮件的基本系统。我的电子邮件模型中有一个提供电子邮件内容的字段:

class Email(models.Model):
    message = models.TextField(_("Message"), blank=True)

我想指定默认内容,但是消息本身可能很长。有没有办法让默认值引用文本文件(或任何文件),而不是在模型本身中有这个?

例如

class Email(models.Model):
    message = models.TextField(_("Message"), blank=True, default='mytextfile.txt')

class Email(models.Model):
    message = models.TextField(_("Message"), blank=True, default='"Sed ut perspiciatis unde omnis 
    iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa 
    ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim 
    voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores   
    qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia ...')

标签: djangodjango-models

解决方案


我建议使用 Django Forms 并覆盖该__init__方法以从任何外部文件设置默认值。例如:

class EmailForm(forms.Form):
    def __init__(self, *args, **kwargs):
        super(EmailForm, self).__init__(*args, **kwargs)

        data_from_txt_file =self.get_default_email_message() #Define a method to read data from txt file and return as string

        self.fields['message'].initial = data_from_txt_file

推荐阅读