1

我对这个问题很感兴趣,并在在这里问这个问题之前寻找一些解决方案。假设我有一个Model在不同的领域共享相同领域的领域,Models我该如何实现这一点,当我得到objects那些Models我可以包含的领域时Model foreign key,我确实尝试使用Generic Relationin来实现这一点,DJango但它并没有解决我的问题。

这是我要使用的示例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

因此,当我尝试从中获得时,我该objects如何Model(n)实现或获得SameObjectModel

我有这个想法,我可以这样做:

Model(n).objects.prefetch_related('fk').all() 

似乎这不是一个好主意,因为我不知道应该放在哪里,related_name因为外键是content_type模型并且有object_id代表字段primary_key

4

1 回答 1

0

在你Model(n)的你可以添加一个GenericRelationSameObjectModel

from django.contrib.contenttypes.fields import GenericRelation


class Model1(models.Model):
    sameobject = GenericRelation(SameObjectModel)

有了这个,应该可以使用prefetch_related

Model1.objects.prefetch_related('sameobject').all()
于 2021-08-02T06:21:14.273 回答