使用Django中的抽象类从多到多检索对象
我的问题类似于,但在这种特殊情况下创建连接表并不好 模型的简短片段:使用Django中的抽象类从多到多检索对象,django,django-models,Django,Django Models,我的问题类似于,但在这种特殊情况下创建连接表并不好 模型的简短片段: class Item(models.Model): photos = models.ManyToManyField('Photo', blank=True, null=True, related_name='photo_in_%(class)ss') class Meta: abstract = True 然后我有很多这样的课程: class Article(Item): pass cla
class Item(models.Model):
photos = models.ManyToManyField('Photo', blank=True, null=True, related_name='photo_in_%(class)ss')
class Meta:
abstract = True
然后我有很多这样的课程:
class Article(Item): pass
class BlogEntry(Item): pass
class Country(Item): pass
...
当然:
class Photo(models.Model):
pass
例如,a=Article()
我可以很容易地在文章中使用a.photos.all()
问题是:拥有p=Photo()
如何检索具有此照片的所有对象
但是:
泛型关系不是一个选项。每张照片可以同时出现在各种物品的照片中
不过,我想出了这样一种方法。但是它使用eval,eval是邪恶的
如果有任何不同(更好)的解决方案,我将不胜感激。而不是:
qset = eval('self.%s.all()' % (cl))
做:
而不是:
qset = eval('self.%s.all()' % (cl))
做:
谢谢-非常好!我假设没有类似Django的方法来做这样的事情?为什么在Python方法已经起作用的情况下有类似Django的方法呢?不需要重新发明轮子。如果效果很好,你应该接受答案!只是因为在建模和处理Django的ORM时,并非所有Python方法都能很好地工作。我知道我应该接受你的回答,但有什么急事吗?谢谢-非常好!我假设没有类似Django的方法来做这样的事情?为什么在Python方法已经起作用的情况下有类似Django的方法呢?不需要重新发明轮子。如果效果很好,你应该接受答案!只是因为在建模和处理Django的ORM时,并非所有Python方法都能很好地工作。我知道我应该接受你的回答,但有什么急事吗?
photo_attr = getattr(self, cl)
qset = photo_attr.all()