Code

Opened 5 years ago

Last modified 10 months ago

#11560 new New feature

let proxy models multiple-inherit from the same concrete base model

Reported by: rfk Owned by: nobody
Component: Database layer (models, ORM) Version: 1.1-beta
Severity: Normal Keywords:
Cc: Triage Stage: Accepted
Has patch: yes Needs documentation: yes
Needs tests: no Patch needs improvement: yes
Easy pickings: no UI/UX: no

Description (last modified by julien)

Currently proxy models are required to have a single concrete base model class. Unfortunately this prevents me from combining several proxy subclasses of the same model. In my particular use case, I have two different apps that provide two different proxies of the standard User model. To successfully use both apps I need to create another subclass that combines the two, e.g:

class MyUser(App1User,App2User):
    class Meta:
        proxy = True

This gives a TypeError: "Proxy model 'MyUser' has more than one non-abstract model base class". But since App1User and App2User proxy the same underlying model, there's no ambiguity introduced by this multiple inheritance and I think it should be permitted.

Attached is a simple patch to make this work, by permitting additional concrete base classes if they are identical to the one that was already found.

Attachments (1)

multiple_proxy_models.diff (3.4 KB) - added by rfk 3 years ago.

Download all attachments as: .zip

Change History (9)

comment:1 Changed 5 years ago by rfk

  • Component changed from Uncategorized to Database layer (models, ORM)
  • Needs documentation unset
  • Needs tests unset
  • Patch needs improvement unset

comment:2 Changed 5 years ago by Alex

  • Triage Stage changed from Unreviewed to Accepted

comment:3 Changed 3 years ago by julien

  • Severity set to Normal
  • Type set to New feature

comment:4 Changed 3 years ago by julien

  • Description modified (diff)
  • Needs documentation set
  • Patch needs improvement set

The tests would need to be rewritten using unittests since this is now Django's preferred way.

Changed 3 years ago by rfk

comment:5 Changed 3 years ago by rfk

I've redone the patch against latest trunk and added a brief note in the proxy models documentaion.

comment:6 Changed 2 years ago by aaugustin

  • UI/UX unset

Change UI/UX from NULL to False.

comment:7 Changed 2 years ago by aaugustin

  • Easy pickings unset

Change Easy pickings from NULL to False.

comment:8 Changed 10 months ago by gzerone@…

Hi rfk, thanks for the patch file, it works for me. Hope the feature will work on master branch.

Add Comment

Modify Ticket

Change Properties
<Author field>
Action
as new
The owner will be changed from nobody to anonymous. Next status will be 'assigned'
as The resolution will be set. Next status will be 'closed'
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.