from Shopping.models import Coupon, OrderDetail
class Course:
order_details = GenericRelation(to=OrderDetail)
coupon = GenericRelation(to=Coupon)
-------------在Shopping的models.py中:
from Course.models import Account
class Coupon:
account = models.ForeignKey(to=Account, verbose_name="拥有者", on_delete=None, related_name="coupons")
class OrderDetail:
报错
:ImportError: cannot import name '***' from '*****'
原因:
暂不清楚
解决方案
:
使用app_name.class_name的方式,注意不是app_name.models.class_name
在 Course 的models.py中:
class Course:
order_details = GenericRelation(to="Shopping.OrderDetail")
coupon = GenericRelation(to="Shopping.Coupon")
在Shopping的models.py中:
class Coupon:
account = models.ForeignKey(to="Course.Account", verbose_name="拥有者", on_delete=None, related_name="coupons")
class OrderDetail:
Django有俩个 app----------在 Course 的models.py中:from Shopping.models import Coupon, OrderDetailclass Course: order_details = GenericRelation(to=OrderDetail) coupon = GenericRelation(to=Coupon)-------------在Shopping的models.py中:from Course.mo.
第一个
app
下的
model
from
django
.contrib.auth.
model
s import AbstractUser
from
django
.db import
model
s
# Create your
model
s here.
class UserInfo(AbstractUser):
telephone=
model
s.CharField(max_length=11,verbose_name='手机号',null=True,help_text='11位电话号码')
一、
django
中
跨
app
引用
model
,以
app
02
中
的
model
要
引用
app
01
中
的
model
为例:
1、
app
01 的
model
s.py 文件如下:
from
django
.db import
model
s
# Create your
model
s ...
1.删除
app
下的migrations
中
的数据库操作的.py记录
2.删除数据库
django
_migrations
中
相应记录
3.
python
manage.py makemigrations your
app
name
4.
python
manage.py migrate your
app
name
补充知识:
django
model
save方法对未更改的字段依然进行了保存
如下所示:
obj = Obj.objects.get(id=1)
print obj.name #此时name的值假定为'abc'
def handler(oid):
obj = Obj.objects.get(id
在
Django
中
创建模型,模型之
间
可以建立
不同
的联系,one-to-one relationship,one-to-many relationship,many-to-many relationship,在实际的项目
中
,往往需要根据一个模型和关系来
引用
另一个模型对象,接下来我们来看一下这几种关系
中
,如何
相互
提取与之想关联的模型
class EntryDetail(
model
s.
Model
):
很多网站有多数据库联用的文章,如自强学堂http://code.ziqiangxuetang.com/
django
/
django
-multi-database.html
大都只讲解如何让
不同
的
app
对应
不同
的数据库,而没有谈到如何让同一个
app
里的
不同
class对应
不同
的数据库。
经过N多次试验,历经好几天时
间
,终于找出如下的简便易行的途径,而不需要自己造轮子,现总结如下:
方式一:...
python
-m venv .venv
在Windows
中
: .venv\Scripts\activate
在Ubuntu
中
: source .venv\Scripts\activate
安装依赖项
pipenv install
创建文件.env
定义SECRET_KEY和DEBUG
python
manage.py makemigrations
python
manage.py migrate
生成静态文件
python
manage.py collectstatic
运行应用程序
python
manage.py runserver
拷贝过来的
Django
文件在pycharm
中
打开时,执行
python
manage.py makemigrations和
python
manage.py migrate时出现报错:
django
.db.utils.OperationalError: (1050, “Table nanme ’ already exists”)
使用网上的方法:
python
manage.py migrate
app
名字 –fake
发现如果在
model
里面再新增字段的时候执行
python
manage.py migrate的时候再次报错:No migrations to
app
ly.
表明在migrat
Model
元数据就是 “不是一个字段的任何数据” — 比如排序选项, admin 选项等等.
下面是所有可能用到的 Meta 选项. 没有一个选项是必需的. 是否添加 class Meta 到你的
model
完全是可选的.
app
_label
app
_label这个选项只在一种情况下使用,就是你的模型类不在默认的应用程序包下的mod
可以使用ForeignKey或ManyToManyField来建立模型之
间
的连接查询。ForeignKey用于建立一对多的关系,ManyToManyField用于建立多对多的关系。在定义模型时,可以在字段
中
使用related_name参数来指定反向查询的名称,方便查询时使用。例如:
class Author(
model
s.
Model
):
name =
model
s.CharField(max_length=100)
class Book(
model
s.
Model
):
title =
model
s.CharField(max_length=100)
author =
model
s.ForeignKey(Author, on_delete=
model
s.CASCADE, related_name='books')
可以通过Author模型的books属性来查询该作者所写的所有书籍。