Django在\uyu init中获取模型id__

2024-04-24 03:44:18 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的代码:

class PreEncounterAttendanceForm(ModelForm):

    class Meta:
        model = PreEncounterAttendance
        fields = '__all__'

    def __init__(self, *args, **kwargs):
        super(PreEncounterAttendanceForm, self).__init__(*args, **kwargs)
        this_class = self.instance.pre_encounter_class.id
        visitors = Visitor.objects.exclude(id__in=PreEncounterAttendance.objects.all().exclude(pre_encounter_class__id=this_class).values_list('student', flat=True))
        self.fields['student'].queryset = visitors

当我手动输入数字时它可以工作,但是当我使用self.instance.pre_encounter_class.id时它失败了,因为它是一个NoneType。在

有别的办法吗?在

编辑: 发现了问题。我必须先检查实例id是否存在:

^{pr2}$

Tags: instanceselfidfieldsinitargsallthis
1条回答
网友
1楼 · 发布于 2024-04-24 03:44:18

一种可能的方法是从视图中传递kwargs中的class id,然后在调用super()之前弹出它:

def __init__(self, *args, **kwargs):
    this_class = kwargs.pop('class_id', None)
    super(PreEncounterAttendanceForm, self).__init__(*args, **kwargs)    
    visitors = Visitor.objects.exclude(id__in=PreEncounterAttendance.objects.all().exclude(pre_encounter_class__id=this_class).values_list('student', flat=True))
    self.fields['student'].queryset = visitors

相关问题 更多 >