ボリュームフィールドにいくつかの初期データをCourseForm
に渡そうとしていますが、何らかの理由でそれが機能しません。ボリュームフィールドは、データベース内のテーブルに対するForeignKey
です。Django外部キーフィールドの初期値
これは私にエラーを与えません。どの情報も表示されません。それぞれのボリュームフィールドと
マイモデル:そのモデルと
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
は、特定のボリュームのIDである1からxまでの整数を返します。
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)'の代わりにボリュームインスタンスを割り当ててみてください。 – Alasdair
これは私が変更するCourseVolumeモデルです。私は私のポストにそれを加えました。しかし、 'db_table ='を使っていると考えると、 'self.fields [field_name] .initial = field_value'のようなものは許可されていないようです。 あなたのメソッド@ Alasdairに運がないと試しました。 –