0

在 Models.py 文件中 (我有这个代码库)

class Person(models.Model):
    sex_choices = (
        ('Male', 'Male'),
        ('Female', 'Female')
    )
    martial_choices = (
        ('Single', 'Single'),
        ('Married', 'Married'),
        ('Divorce', 'Divorce'),
        ('Widowed', 'Widowed')
    )

    name = models.CharField(max_length=200)
    sex = models.CharField(choices=sex_choices, max_length=50)
    martial_status = models.CharField(choices=martial_choices, max_length=50)
    age = models.IntegerField()


    def __str__(self):
        return self.name


class DetailsOfEducationQualification(models.Model):
    type_choice = (
        ("Government", "Government"),
        ("Private", "Private"),
        ("Anganwadi Center", "Anganwadi Center"),
    )
    education_proximity_choice = (
        ("0-5", '0-5km'),
        ('5-10', '5-10km'),
        ('10+', 'Above 10km'),
        ('Outside the state', 'Outside the state'),
    )

    person = models.ForeignKey(Person, on_delete=models.CASCADE)
    course_class = models.CharField(max_length=50, blank=True)
    type_of_education_sector = models.CharField(choices=type_choice, max_length=50, blank=True)
    education_facility_proximity = models.CharField(choices=education_proximity_choice, max_length=50, blank=True)

在 Admin.py 文件中(我有这个)

from .models import (
    Person, DetailsOfEducationQualification
)

class DetailsOfEducationQualificationInline(admin.TabularInline):
    model = DetailsOfEducationQualification
    extra = 0

    class PersonAdmin(admin.ModelAdmin):
        fieldsets = [
            (
                'Personal Information', {
                'fields':[
                    'name', 'sex', 'age', 'martial_status'
                ]
            }
        ),
    ]
    inlines = [
        DetailsOfEducationQualificationInline
    ]

在查询外壳中,我想获取人“course_class”,因为 DetailsOfEducationQualification 模型与人相关:

就像他的查询一样:

person = Person.objects.get(id=1)
person.course_class

此代码出现错误,说人没有属性...如何从 Person 模型访问 DetailsOfEducationQualification 日期?

4

1 回答 1

0

course_class是 DetailsOfEducationQualification 类的属性而不是Person类的属性,

因此您将无法从人员对象访问它。

detail = DetailsOfEducationQualification.objects.get(id=1)
detail.course_class

上面的代码将返回 ID 为 1 的DetailsOfEducationQualificationcourse_class

如果你想从Person对象访问course_class ,

那么你可以使用

person = Person.objects.get(id=1)
person.detailsofeducationqualification_set.first().course_class

person.detailsofeducationqualification_set是所有以 id 为 1 的人员作为外键的 DetailsOfEducationQualification 对象的查询集。

而且, person.detailsofeducationqualification_set.first() 将是查询集的第一个元素。

希望能帮助到你。

于 2020-05-08T14:18:05.913 回答