django如何为多对多字段动态创建内部表

时间:2019-03-13 05:44:40

标签: django django-models django-rest-framework many-to-many

我的模特:

class Image(models.Model):
    name=models.CharField(max_length=40,unique=True,help_text="name of the image")
    tags = models.ManyToManyField(Tag)
class Tag(models.Model):
    tag = models.CharField(max_length=100,unique=True)

在这里进行迁移并迁移时,它是在数据库1.image 2.tag 3.image_tags表中创建3个表

所以,我的问题是我没有在我的models.py文件中指定image_tags表,django从那里创建image_tags表,流程是什么? 我已经签入了迁移文件,但是对此一无所知

1 个答案:

答案 0 :(得分:0)

实际上,这不是Django功能。它是SQL功能。 SQL正在创建内部表。由于SQL无法创建引用,因此它不是外键。这就是为什么出现此桥接表概念的原因。它将解决该问题,并将保留两个表的数据(ID)和少量自定义字段,具体取决于需求。

更新了新的要求: 请参考:

https://gist.github.com/jacobian/827937

Django 1.8 - Intermediary Many-to-Many-Through Relationship - What is the consequence of where 'ManytoManyField' is used?

从我的角度来看,定制桥接表不是一个好习惯。您可以为两个表中的任何一个指定额外的字段,否则创建一个新表使其成为外键