Django与内置“用户”模型有很多很多关系

时间:2013-01-08 17:36:20

标签: python django many-to-many

方案

我有一个基本的Django应用程序,其中用户(django的模型中内置的身份验证)和报告具有多对多的关系。

问题

Django没有创建相应的表来处理这种关系。我的应用程序称为reports。尝试创建report并为其分配用户时,管理系统中存在错误。它尝试查询表reports_report_users,但由于它不存在而失败。

models.py code

 from django.db import models
 from django.contrib.auth.models import User
 class Report(models.Model):
     name = models.CharField(max_length=30, blank=False)
     users = models.ManyToManyField(User, related_name='reports')
     def __unicode__(self):
         return self.name

尝试解决方案

  1. 使用此链接作为参考:https://docs.djangoproject.com/en/1.4/topics/db/examples/many_to_many/
  2. manage.py syncdb大约300次 - 好吧,只有一次,但没有错误,在检查SQLite数据库时没有创建额外的表:(

2 个答案:

答案 0 :(得分:1)

在第一次同步后,您似乎已添加到报告模型中。因此,您正在处理迁移,django本身并不这样做。

首先,检查sql输出,确保存在多对多关系的create table指令。

python manage.py sqlall

假设问题是这是一个迁移,django本身不处理,你有三个选择: 1)删除此应用程序的所有数据库表,然后再次运行syncdb。 2)手动创建表(相当容易从sqlall命令复制粘贴create sql) 3)开始使用像South这样的迁移框架。

从长远来看,你会欣赏在南方学习的投资。在短期内,删除DB文件是最快的.-

答案 1 :(得分:0)

您是否删除了db文件并再次运行manage.py syncdb?