Я хочу запросить информацию из командной строки - PullRequest
0 голосов
/ 08 мая 2020

В файле 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 = Person.objects.get(id=1)
person.course_class

этот код получает ошибку, говоря, что у человека нет атрибута ... Как мне получить доступ к дате DetailsOfEducationQualification из модели Person?

1 Ответ

0 голосов
/ 08 мая 2020

course_class является атрибутом DetailsOfEducationQualification class, а не атрибутом Person class,

, поэтому вы не сможете для доступа к нему из объекта человека.

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

приведенный выше код вернет course_class of DetailsOfEducationQualification с идентификатором 1.

, если вы хотите получить доступ к course_class из объекта Person ,

, тогда вы можете использовать

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

person.detailsofeducationqualification_set is набор запросов всех DetailsOfEducationQualification объектов, у которых есть лицо с идентификатором 1. в качестве внешнего ключа.

и person.detailsofeducationqualification_set.first () будет первым элементом набора запросов.

надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...