代码之家  ›  专栏  ›  技术社区  ›  luc

Django模型继承问题。如何解决?

  •  1
  • luc  · 技术社区  · 14 年前

    我有一个以下型号的应用程序

    class Contact(models.Model):
         lastname = models.CharField(max_length=200)
         firstname = models.CharField(max_length=200)
         ...
    
    class Journalist(Contact):
         pass
    

    我有一个 Contact 在我的数据库中,我希望它成为 Journalist .

    在原始SQL中,它看起来像 insert into app_journalist values (25624); . 在本例中,25624是现有联系人的ID。它看起来工作正常,Django应用程序似乎很高兴。

    不过,我想和姜戈ORM做同样的事情。我试过好几次想强迫记者身份证( Journalist(id=25624) )但它创建了一个新的联系人,而不是链接到现有联系人。

    有没有可能和姜戈ORM合作?怎么用?

    事先谢谢你的帮助

    3 回复  |  直到 14 年前
        1
  •  3
  •   Community CDub    8 年前

    contact_ptr Journalist Contact

    contact = Contact.objects.get(pk = 25624)
    journalist = Journalist(contact_ptr = contact)
    journalist.save()
    

    app_journalist contact_ptr_id insert into app_journalist values (25624) contact_ptr_id = 25624 contact_ptr = <instance of Contact>

    pointed out type

    demo snippet complete code

    journalist = Journalist(contact_ptr = contact)
    

    firstname lastname contact ""

        2
  •  2
  •   GabiMe    14 年前

    Contenttypes

    from django.db import models
    from django.contrib.contenttypes.models import ContentType
    from django.contrib.contenttypes import generic
    
    class Contact(models.Model):
         lastname = models.CharField(max_length=200)
         firstname = models.CharField(max_length=200)
         content_object = generic.GenericForeignKey('content_type', 'object_id')