Django 多对多的保存
Django 多对多的保存
Models 模型如下:
Python
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
|
# 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"
|
多对多的保存
首先查询出 多对多需要用的
Python
"""
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: 海王>
|
-
zeropython 微信公众号
5868037 QQ号
[email protected] QQ邮箱