我是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}},当他们在admin中创建对象时,希望我已经足够清楚了。提前谢谢!
答案 0 :(得分: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)
简单到完成我想要的东西,我将在模型中声明一个新字段,以使其更具可扩展性。