Наследование моделей в Django с помощью общих отношений

У меня следующая структура модели:

**models.py**

class Person(models.Model):
    .
    .
    contact = GenericRelation(Contact)


class Patient(Person):
    some other fields

При создании пациента я делаю в сериализаторе следующее:

**serializers.py**

class PatientSerializer(serializers.ModelSerializer):

    contact = ContactSerializer(many=True)

    class Meta:
        model = Patient
        fields = PersonSerializer.Meta.fields + ...


    def create(self, validated_data):
        if('contact' in validated_data):
            contact_data = validated_data.pop('contact')

        instance = Patient.objects.create(**validated_data)
        person = Person.objects.get(id=instance.person_ptr_id)

        if(contact_data):
            for contact in contact_data:
                Contact.objects.create(..., content_object=person)

Таким образом, в таблице Contact будет прямая ссылка на базовую модель Person. Цель этого заключается в том, что я должен основывать другие классы на Person, чтобы наследовать эти контакты.

Проблема, с которой я сталкиваюсь с этой структурой, заключается в том, что для представления Patient View "contact" всегда пуст: он возвращает нижеприведенные данные из представлений list и retrieve. Может ли это быть просто вопросом настройки набора запросов?

"контакт": []

Любые советы по улучшению/структурированию этого кода приветствуются.

Заранее спасибо!

Вернуться на верх