django - 如何在表单中使用预填充的 ChoiceField 创建实例
问题描述
这是我的forms.py。我想在我的模型中创建具有默认“V”选项的实例。因此创建了实例,但选择了“A”,这是我在模型中默认提供的。
class VideoForm(forms.ModelForm):
theory_type = forms.ChoiceField(choices=quests.StageTheories.THEORY_TYPE)
class Meta:
model = quests.StageTheories
fields = ['title', 'youtube', 'stage']
class StageTheories(models.Model):
THEORY_TYPE = (
('Q', 'Quiz'),
('A', 'Article'),
('V', 'Video'),
)
stage = models.ForeignKey(to=Stages, on_delete=models.CASCADE, db_column="stage_id",verbose_name="Этап", )
title = models.CharField(max_length=47, db_column="title", verbose_name="Заголовок теории",)
text = models.TextField(db_column="text", verbose_name="Текст теории", null=True, blank=True,)
youtube = models.URLField(db_column="youtube", verbose_name="Ссылка на youtube", null=True, blank=True,)
sortOrder = models.PositiveIntegerField(null=True, blank=True, db_column="sort_order", verbose_name="Порядковый номер", )
theory_type = models.CharField(max_length=1, choices=THEORY_TYPE, default='A')
class AddVideoView(CreateView):
model = quests.StageTheories
form_class = VideoForm
success_url = '/'
template_name = 'add_video.pug'
def get_initial(self):
initial = super().get_initial()
initial['stage'] = quests.Stages.objects.get(id=self.kwargs['pk'])
initial['theory_type'] = 'V'
return initial
初始值不用于表单数据吗?
解决方案
它是从哪里继承来的?get_initial
我认为您可以尝试使用 def init (...): initial[] = 或 self.fields['name'].initial
推荐阅读
- python - 如果熊猫数据框中的下一个单元格为 0,我如何保持上一个单元格的值?
- javascript - 为什么这个 SVG 没有显示在 Google 地图 (JavaScript) 中?
- android - 如何更改导航栏的颜色(手势模式)?
- java - 如何最好地对期望设置 ThrreadLocal 变量的类使用 junit 测试?
- ansible - 我可以浏览 Ansible 的 CICS 资源之间的关系吗?
- python - Python - 将一个 sns.histplot() 中的 bin 用于另一个 / 从 sns.histpllot() 中提取 bin 信息
- php - 在外键约束“followers_ibfk_1”中引用列“follower_id”和引用列“id”不兼容。我的错误是什么?
- python - python中的十六进制到Base64,但我得到错误的结果
- python - 如何使用 matplotlib 制作水平虚线?
- typescript - 下一个 JS Mock API 端点在 req.body 中为 POST 发送参数