0

我正在 django 中建立一个数据库,但我遇到了一些障碍,

我正在尝试做这样的事情:有一个对象,该对象有两个索引。每个索引都有两个值。这可能听起来令人困惑,所以让我这样说:

书有索引 alpha 和索引 Beta 索引 alpha 位于位置 (4,3) 索引 beta 位于位置 (7,4)
请注意,位置是单独存储的,而不是整数形式 ((4,3) 而不是 "43 ")

为了在数据库上实现这一点,我为索引和书建立了一个类,索引中有一个外键。像这样:

class index(models.Model):
    book = models.ForeignKey(Books)
    int1 = models.IntegerField()
    int2 = models.IntegerField()

但是,我想简化这一点。当我尝试为索引类提供其他用途时,它会变得一团糟。(不专门用于书籍类)

理想情况下,我会创建一个自定义的多值字段,以后我可以在我的书籍类中自由使用,如下所示:

class Book(models.Model):
      title=...
      publisher= ...
      indexA=customMulti-valueField()

这可能吗?我将如何定义这样的字段?我查看了有关自定义字段创建的 django 文档,但我认为它不能解决我的问题。

这里主要关注的是有一个 mysql 数据类型可以存储类似于 python 元组的东西。

谢谢。

4

1 回答 1

0

如果它只有 2 个索引,我只需将它们存储在 IntegerFields 中并创建一个返回它们的方法,如下所示:

class Book(models.Model):
    title=...
    publisher= ...
    indexAX=models.IntegerField()
    indexAY=models.IntegerField()
    indexBX=models.IntegerField()
    indexBY=models.IntegerField()

    def indexA(self):
        return self.indexAX, self.indexAY

    def indexB(self):
        return self.indexBX, self.indexBY

然后你可以像这样使用它:

b = Book.objects.create('Title', 'Publisher', 1, 2, 3, 4)
ax, ay = b.indexA()
bx, by = b.indexB()
于 2012-04-05T17:44:00.097 回答