问题描述
我是 Django 的初学者,我正在做最后一年的项目,但我坚持做一件事。
这是我的model.py
class MatchList(models.Model):
user = models.OnetoOneField(settings.AUTH_USER_MODEL,on_delete=models.CASCADE,related_name="user")
matches = models.ManyToManyField(settings.AUTH_USER_MODEL,blank=True,related_name="matches")
class Meta:
app_label = "matchsystem"
这里也是我的迁移文件。
class Migration(migrations.Migration):
initial = True
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),]
operations = [
migrations.CreateModel(
name='MatchRequest',fields=[
('id',models.BigAutoField(auto_created=True,primary_key=True,serialize=False,verbose_name='ID')),('is_active',models.BooleanField(default=True)),('times_tamp',models.DateTimeField(auto_Now_add=True)),('receiver',models.ForeignKey(on_delete=django.db.models.deletion.CASCADE,related_name='receiver',to=settings.AUTH_USER_MODEL)),('sender',related_name='sender',],),migrations.CreateModel(
name='MatchList',('matches',models.ManyToManyField(blank=True,related_name='matches',('user',models.OnetoOneField(on_delete=django.db.models.deletion.CASCADE,related_name='user',]
任何回应都非常适用。
解决方法
没有错。在数据库术语中,ManyToManyField
只是一个额外的中间表,它具有两个相关表的外键。这是因为你真的不能在同一列中有多个值指向多个条目。
您在图片中显示的第一个表 matchsystem_matchlist
包含字段 id
和 user_id
,这是正确的,id
是主键,user_id
是外键(在您的模型 user
中)。这是您的模型 MatchList
的表格。
接下来你的第二个表 matchsystem_matchlist_matches
有字段 id
是主键,matchlist_id
是外键 MatchList
和 users_id
是用户模型的外键。第二个表是为模型 ManyToManyField
中名为 matches
的 MatchList
制作的中间表。