码迷,mamicode.com
首页 > 其他好文 > 详细

django 在建模时的一个手贱

时间:2017-07-26 00:21:19      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:mysql   mod   length   migrate   models   pytho   ash   errors   pre   

最近在写一个网站,在建立model的时候遇到了一些问题,最后找了好久才找到为什么。

 

一、django的model定义如下:

from django.db import models

# Create your models here.

class Person(models.Model):
    name=models.CharField(max_length=8,primary_key=True)



class Student(Person):
    studentID=models.ForeignKey(Person)

 

二、在执行migrate 的时候报如下的错:

python3 manage.py migrate coreapp
SystemCheckError: System check identified some issues:

ERRORS:
coreapp.Student.studentID: (fields.E305) Reverse query name for Student.studentID clashes with reverse query name for Student.person_ptr.
    HINT: Add or change a related_name argument to the definition for Student.studentID or Student.person_ptr.

 

三、引起问题的原因:

  这个问题的原因在于Student这个类定义的时候有错误,由于我最近几年对mysql数据的接触比较多,知道Person表和Student表

  在数据库中是父子表的关系,所以在python代码编写的时候,就自然而然的把Person写在了Student的基类;事实上Student类的

  基类应该是models.Model类。

 

四、正确写法

from django.db import models

# Create your models here.

class Person(models.Model):
    name=models.CharField(max_length=8,primary_key=True)



class Student(models.Model):
    studentID=models.ForeignKey(Person)

 由于源码不能公布出来,所以这个例子中的类设计就比较“粗糙”了;但是哪理不糙呀!

 

----

django 在建模时的一个手贱

标签:mysql   mod   length   migrate   models   pytho   ash   errors   pre   

原文地址:http://www.cnblogs.com/JiangLe/p/7236751.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!