python 提升生活和办公效率

2020-02-09 [django]外键的一个小技巧

2020-02-09  本文已影响0人  alue

在定义django模型外键的时候,如果关联的表在另一个app内,那么有两种定义方式:

新手常用的方法是

from production.models import Manufacturer
class Car(models.Model):
    manufacturer = models.ForeignKey(
        Manufacturer, #尽量避免这样定义
        on_delete=models.CASCADE,
    )

官方更推荐的是如下的方式

class Car(models.Model):
    manufacturer = models.ForeignKey(
        'production.Manufacturer', #这样定义比较好
        on_delete=models.CASCADE,
    )

原因

第二种方法能够避免循环引用. 以上面为例,如果在production应用下存在

# production/models.py
from vehicle.models import xxx

同时,在vehicle应用下存在

# vehicle/models.py
from production.models import yyy

那么python就会报引用错误

 [ImportError: Cannot import name X]

而用第二种方法,就能避免这个问题。

上一篇下一篇

猜你喜欢

热点阅读