I'm stack with this problem, and looking for some solution before asking this question here. Lets say I have a one Model
that shares same field in different Models
how can I achieve this that when I get the objects
of those Models
I can include that Model
foreign key
, I did try to achieve this using Generic Relation
in DJango
yet it didn't solve my issue.
here is the sample what I'm trying to achieve using Generic Relation
:
Model1(models.Model):
.. objects_on_this_model ..
Model2(models.Model):
.. objects_on_this_model ...
# Now this is where the model I could save different models with same field shared
SameObjectModel(models.Model):
content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
object_id = models.PositiveIntengerField()
content_object = GenericForeignKey('content_type', 'object_id')
.. objects_on_this_model .. # which is the field that has same field to use in different models
So when I try to get the objects
from Model(n)
how can I achieve or get the SameObjectModel
?
I have this on my mind that I could do this:
Model(n).objects.prefetch_related('fk').all()
Seems it is not a good idea, since I do not know where I should put the related_name
since the foreign key is the content_type
which is the model and there is the object_id
represent the field primary_key
.
On your Model(n)
's you can add a GenericRelation
to SameObjectModel
:
from django.contrib.contenttypes.fields import GenericRelation
class Model1(models.Model):
sameobject = GenericRelation(SameObjectModel)
With this, it should be possible to use prefetch_related
:
Model1.objects.prefetch_related('sameobject').all()