Django对外键字段的初始值

时间:2017-10-11 09:50:38

标签: python django forms foreign-keys

我正在尝试将一些初始数据传递到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})

My CourseVolume模型:

class CourseVolume(CourseEnum):
    published = models.BooleanField(default=False)

class Meta(CourseEnum.Meta):
    db_table = 'mbs_course_volume'

如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

尝试为volume字段添加默认值。该值应该是相关表(CourseVolume)的现有ID。

volume = models.ForeignKey(CourseVolume, default=1)