我用這個簡單的代碼為 HTML 文件創(chuàng)建了一個選擇字段:MY_CHOICES = ( ('0', 'Johnny B. Goode'), ('1', 'Lightning McQueen'), ('2', 'Iron Man'),)def get_student(): student_data = MY_CHOICES student_list = student_data return student_listdef get_my_students(): student_list = get_student() choices_list = student_list return choices_listclass studentForm(forms.Form): def __init__(self, *args, **kwargs): super(studentForm, self).__init__(*args, **kwargs) self.fields['my_students_field'] = forms.ChoiceField(choices=get_my_students())def get_data(request): form = studentForm() if form: print('form') return render_to_response('bills/generator.html',{'form': form}) else: return print('no Form')我現(xiàn)在的問題是,MY_CHOICES 是一個普通的元組,其中一些參數(shù)顯示在我的視圖中,但我想獲取存儲在另一個名為“Students”的應(yīng)用程序中的對象(想要導(dǎo)出“first_name”+“l(fā)ast_name” ) 而不是 MY_CHOICES 中的條目。對象存儲在這個類中:class Student(models.Model): first_name = models.CharField(_(u'Vorname'),max_length=30) last_name = models.CharField(_(u'Nachname'),max_length=30) teacher = models.ForeignKey(Teacher, on_delete=models.CASCADE) location = models.ForeignKey(Location, on_delete=models.CASCADE) postal_code = models.CharField(_(u'Postleitzahl'),max_length=30) city = models.CharField(_(u'Ort'),max_length=30) def __str__(self): return "%s %s" % (self.first_name, self.last_name)所以我正在尋找一種戰(zhàn)略方法,如何解決這個問題。希望有人能給我一個提示。
1 回答

精慕HU
TA貢獻(xiàn)1845條經(jīng)驗(yàn) 獲得超8個贊
你讓這比它需要的要困難得多。您不想從 Student 中獲取名稱并“將其放入元組 MY_CHOICES”。元組無關(guān)緊要。您想要的是有一個從 Student 模型填充的字段,并且有一個專門用于該字段的表單字段:ModelChoiceField。你可以直接使用它:
from students.models import Student
class StudentForm(forms.Form):
student = forms.ModelChoiceField(queryset=Student.objects.all())
你不需要做任何其他事情。
添加回答
舉報
0/150
提交
取消