Django - 管理表单中的动态文本

3

我是新手,学习Django并开发了一个应用程序,使管理员能够创建调查问卷。现在我正在尝试找到一种方法,让管理员在表单中包含文本(创建调查问卷时),该文本将代表他们之前输入的字段值。

例如:假设管理员想要在调查问卷描述或问题内引用调查名称,但不想输入调查名称,而是使用关键字引用调查名称字段,并正确地呈现调查名称在HTML中。

models.py:

class Survey(models.Model):
    name = models.CharField(max_length=200)
    slug = models.SlugField(max_length=255)
    description = models.TextField()
    pub_date = models.DateTimeField(auto_now=False, default=datetime.datetime.now)
    external_survey_url = models.CharField(max_length=255, blank=True)
    minutes_allowed = models.FloatField(max_length=10, default=0)
    is_active = models.BooleanField(default=True)

admin.py:

class SurveyAdmin(admin.ModelAdmin):
    save_as = True
    prepopulated_fields = { "slug": ("name",),}
    fields = ['name', 'pub_date', 'description', 'external_survey_url', 'minutes_allowed', 'slug']
    inlines = [QuestionInline, SurveyImageInLine]

我尝试过使用 {{ var|safe }},但发现这仅适用于HTML标签,而不是Django模板语言变量,否则管理员在创建对象时可以简单地填写{{var}}。希望我表达得足够清楚。谢谢!

1个回答

2

通过对我的模型save()方法进行简单的更改,解决了这个问题。我完全忘记了Python中的字符串格式化...

models.py

    def save(self, *args, **kwargs):
        try:
            self.description = self.description % self.name
        except TypeError:
            pass
        self.slug = self.name
        super(Survey, self).save(*args, **kwargs)

这个任务很简单,为了让它更具扩展性,我会在模型中声明一个新字段。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接