Наследование моделей в 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. Может ли это быть просто вопросом настройки набора запросов?
"контакт": []
Любые советы по улучшению/структурированию этого кода приветствуются.
Заранее спасибо!