Django中的旧版Rails数据库-通用关系-对象查询

时间:2019-11-16 19:48:42

标签: ruby-on-rails django django-models django-rest-framework

我正在将Rails应用程序迁移到Django。我目前遇到一些与关系和过滤器有关的挑战。

有一个Posts表和一个Articles表。它们具有Categorizations表中的类别。 Categorizations表具有categorizable_typecategorizable_idcategory字段。

因此,我可以在现有的Categorizations实例中看到categorizable_type=Postcategorizable_type=Article并将categorizable_id设置为8或...

我已经找到了Django Generic Relations的文档,看来这基本上就是所用的东西。但是我目前无法在数据库上运行任何迁移。因此,我想知道如何进行这项工作,以便进行标准的对象过滤查询。

以下是设置示例:

class Articles(models.Model):
    id = models.BigAutoField(primary_key=True)
    title = models.CharField(max_length=1000)

class Posts(models.Model):
    id = models.BigAutoField(primary_key=True)
    title = models.CharField(max_length=1000)

class Categorizations(models.Model):
    id = models.BigAutoField(primary_key=True)
    category = models.ForeignKey(Categories, models.DO_NOTHING, blank=True, null=True)
    categorizable_type = models.CharField(max_length=1000, blank=True, null=True)
    categorizable_id = models.BigIntegerField(blank=True, null=True)

所以我希望能够做这样的事情:

acticles_in_category_2 = Articles.objects.filter(categorization__catogory.id=2)

问题是我无法在现有数据库上进行任何结构更改或迁移。 现在看来,我可能不得不通过一些自定义sql查询来解决此问题。还值得一提的是,最终目标是通过Django Rest Framework端点进行这些过滤,因此,如果有针对该特定用例的任何变通办法,将非常欢迎。

0 个答案:

没有答案