Django 多对多的保存
Models 模型如下:
from <span class="wp_keywordlink_affiliate"><a href="https://www.168seo.cn/tag/django" title="View all posts in django" target="_blank">django</a></span>.db import models # Create your models here. class Category(models.Model): cate_name = models.CharField(max_length=30) cate_desc = models.CharField(max_length=100) cate_slug = models.CharField(max_length=30) def __str__(self): return self.cate_name class Meta: db_table="movie_cate" class Tag(models.Model): tag_name = models.CharField(max_length=30) tag_desc = models.CharField(max_length=100) tag_slug = models.CharField(max_length=30) def __str__(self): return self.tag_name class Meta: db_table="movie_tag" class Director(models.Model): name = models.CharField(max_length=30) desc = models.TextField(blank=True) def __str__(self): return self.name class Meta: db_table="director" class Actor(models.Model): name = models.CharField(max_length=30) desc = models.TextField(blank=True) def __str__(self): return self.name class Meta: db_table="actor" class Dl_links(models.Model): links = models.CharField(max_length=200) links_name = models.CharField(max_length=30) def __str__(self): return self.links_name class Meta: db_table="dl_links" class Movie(models.Model): title = models.CharField(max_length=50) category = models.ForeignKey(Category) directors = models.ManyToManyField(Director) actors = models.ManyToManyField(Actor) poster = models.CharField(max_length=100) tags = models.ManyToManyField(Tag) other_name = models.CharField(max_length=100,default='') dl_links = models.ForeignKey(Dl_links,null=True,default='') score = models.IntegerField() def __str__(self): return self.title class Meta: db_table="movie"
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
from
django
.
db
import
models
# Create your models here.
class
Category
(
models
.
Model
)
:
cate_name
=
models
.
CharField
(
max_length
=
30
)
cate_desc
=
models
.
CharField
(
max_length
=
100
)
cate_slug
=
models
.
CharField
(
max_length
=
30
)
def
__str__
(
self
)
:
return
self
.
cate_name
class
Meta
:
db_table
=
"movie_cate"
class
Tag
(
models
.
Model
)
:
tag_name
=
models
.
CharField
(
max_length
=
30
)
tag_desc
=
models
.
CharField
(
max_length
=
100
)
tag_slug
=
models
.
CharField
(
max_length
=
30
)
def
__str__
(
self
)
:
return
self
.
tag_name
class
Meta
:
db_table
=
"movie_tag"
class
Director
(
models
.
Model
)
:
name
=
models
.
CharField
(
max_length
=
30
)
desc
=
models
.
TextField
(
blank
=
True
)
def
__str__
(
self
)
:
return
self
.
name
class
Meta
:
db_table
=
"director"
class
Actor
(
models
.
Model
)
:
name
=
models
.
CharField
(
max_length
=
30
)
desc
=
models
.
TextField
(
blank
=
True
)
def
__str__
(
self
)
:
return
self
.
name
class
Meta
:
db_table
=
"actor"
class
Dl_links
(
models
.
Model
)
:
links
=
models
.
CharField
(
max_length
=
200
)
links_name
=
models
.
CharField
(
max_length
=
30
)
def
__str__
(
self
)
:
return
self
.
links_name
class
Meta
:
db_table
=
"dl_links"
class
Movie
(
models
.
Model
)
:
title
=
models
.
CharField
(
max_length
=
50
)
category
=
models
.
ForeignKey
(
Category
)
directors
=
models
.
ManyToManyField
(
Director
)
actors
=
models
.
ManyToManyField
(
Actor
)
poster
=
models
.
CharField
(
max_length
=
100
)
tags
=
models
.
ManyToManyField
(
Tag
)
other_name
=
models
.
CharField
(
max_length
=
100
,
default
=
''
)
dl_links
=
models
.
ForeignKey
(
Dl_links
,
null
=
True
,
default
=
''
)
score
=
models
.
IntegerField
(
)
def
__str__
(
self
)
:
return
self
.
title
class
Meta
:
db_table
=
"movie"
|
多对多的保存
首先查询出 多对多需要用的
""" category = models.ForeignKey(Category) directors = models.ManyToManyField(Director) actors = models.ManyToManyField(Actor) tags = models.ManyToManyField(Tag) dl_links = models.ForeignKey(Dl_links,null=True,default='') """ In [1]: from movie.models import * In [2]: c1 = Category.objects.get(pk=1) In [3]: c1 Out[3]: <Category: 分类0> In [4]: d1 = Director.objects.get(pk=1) In [5]: d1 Out[5]: <Director: 0导演> In [6]: d2 = Director.objects.get(pk=2) In [7]: t1 = Tag.objects.get(pk=1) In [8]: t2 = Tag.objects.get(pk=2) In [9]: dl1 = Dl_links.objects.get(pk=1) # 保存多对一的类型 In [19]: mv= Movie.objects.create(title='海王',category=c1,poster="ddd",other_na ...: me='d',dl_links=dl1,score=10) # 保存与之关联的多对多 In [21]: mv.directors.add(d1,d2) In [22]: mv.tags.add(t1,t2) In [23]: mv.actors.add(a1,a2) In [24]: mv Out[24]: <Movie: 海王>
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
"""
category = models.ForeignKey(Category)
directors = models.ManyToManyField(Director)
actors = models.ManyToManyField(Actor)
tags = models.ManyToManyField(Tag)
dl_links = models.ForeignKey(Dl_links,null=True,default='')
"""
In
[
1
]
:
from
movie
.
models
import
*
In
[
2
]
:
c1
=
Category
.
objects
.
get
(
pk
=
1
)
In
[
3
]
:
c1
Out
[
3
]
:
<
Category
:
分类
0
>
In
[
4
]
:
d1
=
Director
.
objects
.
get
(
pk
=
1
)
In
[
5
]
:
d1
Out
[
5
]
:
<
Director
:
0导演
>
In
[
6
]
:
d2
=
Director
.
objects
.
get
(
pk
=
2
)
In
[
7
]
:
t1
=
Tag
.
objects
.
get
(
pk
=
1
)
In
[
8
]
:
t2
=
Tag
.
objects
.
get
(
pk
=
2
)
In
[
9
]
:
dl1
=
Dl_links
.
objects
.
get
(
pk
=
1
)
# 保存多对一的类型
In
[
19
]
:
mv
=
Movie
.
objects
.
create
(
title
=
'海王'
,
category
=
c1
,
poster
=
"ddd"
,
other
_na
.
.
.
:
me
=
'd'
,
dl_links
=
dl1
,
score
=
10
)
# 保存与之关联的多对多
In
[
21
]
:
mv
.
directors
.
add
(
d1
,
d2
)
In
[
22
]
:
mv
.
tags
.
add
(
t1
,
t2
)
In
[
23
]
:
mv
.
actors
.
add
(
a1
,
a2
)
In
[
24
]
:
mv
Out
[
24
]
:
<
Movie
:
海王
>
|
2649

被折叠的 条评论
为什么被折叠?



