Py学习  »  问与答

Re:在定义models时,怎样利用一个全局变量来定义一个model名?

django • 9 年前 • 6676 次点击  

问题描述: 1.我在mysite/settings.py文件中定义了一个全局变量,定义方法如下: MODEL = ‘Student’ 2.然后在app/models.py中定义一个model,定义方法如下:

from mysite.settings import MODEL
class MODEL(models.Model):
   id_s = models.AutoField(primary_key=True)
   name_s = models.CharField(max_length=25)

3.执行完命令python manager.py shell之后,敲入以下内容,之后报错

>>> from app.models import Student

报错:

Traceback (most recent call last):
  File "<console>", line 1, in <module>
ImportError: cannot import name Student

请问有什么好点子?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/629
 
6676 次点击  
文章 [ 7 ]  |  最新文章 9 年前
django
Reply   •   1 楼
django    9 年前

@kinegratii 我先看看,有什么问题的话再问您,如果您有直接的例子,可以共享下,多谢了

kinegratii
Reply   •   2 楼
kinegratii    9 年前

参考Django1.5新引入的AUTH_USER_MODEL https://docs.djangoproject.com/en/dev/topics/auth/customizing/

django
Reply   •   3 楼
django    9 年前

@爱情的枪 非常感谢您及时的回复,那您有什么其它建设性的方法吗?

爱情的枪
Reply   •   4 楼
爱情的枪    9 年前

@django 好吧,现在才看清楚你的意图,你这种方法肯定是不行,类名怎么可能是字符串。

django
Reply   •   5 楼
django    9 年前

@爱情的枪 可以使用这种定义的方法,但如果要更改此表名的话,就需要更改好多地方,比如参照它的model里面的一字段id_p=models.ForeignKey(Student)也要随着修改,我想通过定义一个全局变量,只用修改全局变量就可以达到目的,简化修改的复杂度。请问你有什么好的解决办法?

爱情的枪
Reply   •   6 楼
爱情的枪    9 年前
from django.db import models

class Student(models.Model): 
    id_s = models.AutoField(primary_key=True) 
    name_s = models.CharField(max_length=25)
爱情的枪
Reply   •   7 楼
爱情的枪    9 年前

from django.db import models class Student(models.Model): id_s = models.AutoField(primary_key=True) name_s = models.CharField(max_length=25)