How can I define a polymorphic relation between models in Django?

前端 未结 5 1971
夕颜
夕颜 2021-02-05 14:25

I am working on a Django application which contains an Offer model. An Offer instance contains the pricing conditions and points to a product definiti

相关标签:
5条回答
  • 2021-02-05 14:50

    ContentTypes is the right approach. This is because the ForignKey can only point to one type of table so you need to pass through the an intermediate table and do your split depending on the different type.

    So model inheritance for the class hierarchy, but ContentType for the foreign keys.

    0 讨论(0)
  • 2021-02-05 14:52

    Take a look at django-polymorphic, this implements this feature, and also uses ContentTypes internally.

    0 讨论(0)
  • 2021-02-05 14:56

    You can't do that in Django. Either use generic relations or a Django app that add this feature like django_polymorphic.

    0 讨论(0)
  • 2021-02-05 15:00

    If you only need to point to "any product," not any model, then the solution is to have a Product model that all products inherit from (i.e. Television and Camcorder are both subclasses of Product), and give your Offer model a ForeignKey to Product.

    0 讨论(0)
  • 2021-02-05 15:10

    You might want to have a look at model inheritance.

    0 讨论(0)
提交回复
热议问题