Ich versuche, einige Anfangsdaten in das Volumenfeld in CourseForm
zu übergeben, aber aus irgendeinem Grund wird es nicht funktionieren. Das Volumenfeld ist ein ForeignKey
zu einer Tabelle in der Datenbank.Django Anfangswert für Fremdschlüssel Feld
Es gibt mir keine Fehler; Es zeigt nur keine Informationen an.
Mein Modell mit dem jeweiligen Volumen Feld:
class Course(models.Model):
volume = models.ForeignKey(CourseVolume)
code = models.CharField(max_length=100, default=None)
# ... code shortend to simplify
Mein Modelform
mit seinem Modell
class CourseForm(ModelForm):
class Meta:
model = Course
fields = '__all__'
Mein Blick auf Course
gesetzt, wo ich die Ausgangsdaten für die CourseForm
gesetzt bin versucht. Es scheint einfach nicht zu funktionieren. user.volume_preference
gibt eine ganze Zahl von 1 bis x zurück, die die ID für das spezifische Volumen ist.
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})
Mein CourseVolume Modell:
class CourseVolume(CourseEnum):
published = models.BooleanField(default=False)
class Meta(CourseEnum.Meta):
db_table = 'mbs_course_volume'
Wie dieses Problem gelöst werden kann?
sollten Sie die Anfangswerte für die Felder im CourseVolume-Modell angeben. Dann weist es dem Feld "Volumen" zu. –
Versuchen Sie, die Volume-Instanz anstelle der ID zuzuweisen: 'volume = CourseVolume.objects.get (id = user.volume_preference)' – Alasdair
Also ist es das CourseVolume-Modell, das ich ändern muss. Ich habe es meinem Beitrag hinzugefügt. Aber wenn man bedenkt, dass es 'db_table =' verwendet, scheint es so etwas nicht zu erlauben: 'self.fields [field_name] .initial = field_value' Ich habe deine Methode @Alasdair ohne Glück versucht. –