Monday, November 21, 2022

join on plain integerfield

I need to access an existing database whose schema I cannot alter; I used the Django tool to extract the tables to create models.py, which worked great, and I already hacked some model definitions, e.g. to replace a simple IntegerField with a ForeignKey. But there are specific tables, where there is an IntegerField which may contain a ForeignKey from more than one table (think of a group and a user table; whether the reference is a user or a group, is defined by another column):

class Permission(models.Model):
    ...
    user_or_group_id = models.IntegerField(db_column='user_or_group_id', blank=True, null=True)
    is_group = models.IntegerField(db_column='is_group', blank=True, null=True)

So what I would need here is something like a union on ForeignKey (coming from either a User or a Group table) in the model, but I guess that does not exist?
So I used raw SQL for the required joins; I have not been able to formulate a Django queryset to join on a field which is not modeled with ForeignKey.
That is why I was asking for some better support of raw SQL, reference is this ticket: https://code.djangoproject.com/ticket/34168

Any suggestion how I can model such an integerfield, so that I can do joins on it using the Django ORM queryset syntax?

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/ef47ab32-b173-4843-ab23-efa8918073d1n%40googlegroups.com.

No comments:

Post a Comment