将对象从另一个应用程序传输到ChoiceField中

时间:2018-09-27 08:00:37

标签: python django foreign-keys

我已使用以下简单代码为HTML文件创建了一个选择字段:

LongAdder

我现在的问题是,MY_CHOICES是一个普通的元组,在我的视图中显示了一些参数,但是我想获取存储在另一个名为“学生”的应用程序中的对象(想导出“ first_name” + “ last_name”),而不是MY_CHOICES中的条目。 对象存储在此类中:

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_list

def get_my_students():
    student_list = get_student()
    choices_list = student_list
    return choices_list

class 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')

因此,我正在寻找一种战略方法,即如何解决该问题。希望有人能给我提示。

1 个答案:

答案 0 :(得分:0)

您正在使它变得比原来需要的要难得多。您不想从Student取名字,然后“将其放入元组MY_CHOICES”。元组无关紧要。您想要的是有一个从Student模型填充的字段,并且特别有一个表单字段:ModelChoiceField。您可以直接使用它:

from students.models import Student

class StudentForm(forms.Form):
    student = forms.ModelChoiceField(queryset=Student.objects.all())

您无需执行其他任何操作。