【发布时间】:2018-03-22 22:39:32
【问题描述】:
我正在尝试将一些初始数据传递给CourseForm 中的音量字段,但由于某种原因它不起作用。卷字段是数据库中表的ForeignKey。
它不会给我错误;它只是不显示任何信息。
我的模型与相应的体积场:
class Course(models.Model):
volume = models.ForeignKey(CourseVolume)
code = models.CharField(max_length=100, default=None)
# ... code shortend to simplify
我的Modelform,其型号设置为Course
class CourseForm(ModelForm):
class Meta:
model = Course
fields = '__all__'
我试图为CourseForm 设置初始数据的视图。它似乎不起作用。 user.volume_preference 返回一个从 1 到 x 的整数,它是特定卷的 id。
def view_course_create(request):
if request.method == 'POST':
form = CourseForm(request.POST)
if form.is_valid():
form.save()
return redirect('teaching_courses')
else:
user = MbsUser.get_user_from_ad(request.session['username'])
if user.volume_preference is not None:
volume = user.volume_preference
form = CourseForm(initial={'volume': volume})
else:
form = CourseForm()
return render(request, 'teaching/course_create.html', {'form': form})
我的 CourseVolume 模型:
class CourseVolume(CourseEnum):
published = models.BooleanField(default=False)
class Meta(CourseEnum.Meta):
db_table = 'mbs_course_volume'
如何解决?
【问题讨论】:
-
您应该在
CourseVolume模型中的字段中提及初始值。然后它分配给volume字段。 -
尝试分配卷实例而不是id:
volume = CourseVolume.objects.get(id=user.volume_preference) -
所以这是我需要更改的 CourseVolume 模型。我已将其添加到我的帖子中。但考虑到它使用
db_table =,它似乎不允许类似:self.fields[field_name].initial = field_value我试过你的方法@Alasdair 没有运气。
标签: python django forms foreign-keys