2012-04-05 73 views
0

我建立在Django数据库,但我碰到一个有点障碍,Creatinga多值自定义字段模型在Django

我试图做这样的事情:有一个对象,那对象有两个索引。每个指数有两个值。这可能听起来令人困惑,所以让我这么说吧:

书有指数阿尔法和贝塔指数指数 阿尔法是在位置(4,3) 指数测试是在位置(7,4)
注意,位置存储sepparately而不是整数形式((4,3),而不是“43”)

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

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

但是,我想简化这一点。当我尝试为索引类提供其他用途时,它会变得麻木。 (不使用specificaly的书类)

理想我想创建一个自定义多值字段,后来我在我的书类自由使用,就像这样:

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

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

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

谢谢。

回答

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() 
+0

我已经考虑过这种可能性,但在我看来这是一种不整洁的代码。我真的想定制我自己的字段类型。不过,我甚至不确定这是可能的。感谢您的答案,但=) – 2012-04-05 20:32:16

相关问题