Django的ForeignKey字段的初始值
问题描述:
我试图将一些初始数据传递到CourseForm
中的卷字段,但由于某些原因,它不起作用。卷字段是ForeignKey
到数据库中的表。Django的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)的现有ID。
volume = models.ForeignKey(CourseVolume, default=1)
+0
这有效,但我不知道如何用'user.volume_preference'动态地更新这个值。每个用户的默认值是(可以)不同。 –
您应该在'CourseVolume'模型的字段中提及初始值。然后它分配到'volume'字段。 – 2017-10-11 09:56:41
尝试分配卷实例而不是id:'volume = CourseVolume.objects.get(id = user.volume_preference)' – Alasdair
所以这是我需要改变的CourseVolume模型。我已将它添加到我的帖子中。但考虑到它使用'db_table ='它似乎不允许像:'self.fields [field_name] .initial = field_value'我尝试了你的方法@Alasdair没有运气。 –