2013-11-20 53 views
1

ForeignKey的命名约定与连接model的小写版本命名,下面是从文档采取:蟒蛇Django的名字convetions

class Car(models.Model): 
    manufacturer = models.ForeignKey(Manufacturer) 
    # ... 

class Manufacturer(models.Model): 
    # ... 
    pass 

,但我有以下型号:

class Work(models.model): 
    class = models.ForeignKey(Class) 
    #... 

class Class(models.model): 
    #... 
    pass 

正如我们所知,这会引发错误,因为我们无法将变量设置为class,因为它已内置到python中。

问:

不会遵循命名约定实际上是在SQL数据库创建一个问题吗?

例如:

class Work(models.model): 
    cls = models.ForeignKey(Class) 
    #... 

class Class(models.model): 
    #... 
    pass 

将具有不同ForeignKey的名字搞乱了SQL表和数据库的建立?

回答

4

你一定要远离诸如Class,List,String等保留字。不管它是否会搞乱你的数据库,我不确定(试试看!),但它绝对是一个馊主意。如果这不是一个SQL问题,它最终会在某个地方搞到一些东西。

我看到'克拉斯'很多,如果你觉得词类是绝对必要的。 “课程”,也许?

+0

'cls'也是一种常见的收缩 – alko

+0

好的,这是真的,请看我在编辑部分的问题,并请回答。我只是很好奇 –

+1

出于同样的原因,我会将类名从'Class'更改为其他名称。但是,'foo = models.ForeignKey(bar)'一般来说没问题(尽管可能比必要的更混乱)。 – thumbtackthief