美文网首页python 提升生活和办公效率
2020-02-09 [django]外键的一个小技巧

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

作者: alue | 来源:发表于2020-02-09 16:42 被阅读0次

    在定义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]
    

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

    相关文章

      网友评论

        本文标题:2020-02-09 [django]外键的一个小技巧

        本文链接:https://www.haomeiwen.com/subject/tocnxhtx.html