为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

富国沪深 2021-06-09 14:57:59
我用这个简单的代码为 HTML 文件创建了一个选择字段: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')我现在的问题是,MY_CHOICES 是一个普通的元组,其中一些参数显示在我的视图中,但我想获取存储在另一个名为“Students”的应用程序中的对象(想要导出“first_name”+“last_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)所以我正在寻找一种战略方法,如何解决这个问题。希望有人能给我一个提示。
查看完整描述

1 回答

?
精慕HU

TA贡献1845条经验 获得超8个赞

你让这比它需要的要困难得多。您不想从 Student 中获取名称并“将其放入元组 MY_CHOICES”。元组无关紧要。您想要的是有一个从 Student 模型填充的字段,并且有一个专门用于该字段的表单字段:ModelChoiceField。你可以直接使用它:


from students.models import Student


class StudentForm(forms.Form):

    student = forms.ModelChoiceField(queryset=Student.objects.all())

你不需要做任何其他事情。


查看完整回答
反对 回复 2021-06-29
  • 1 回答
  • 0 关注
  • 137 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号