8

设想

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

问题

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

模型.py 代码

 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 db 时没有创建额外的表:(
4

2 回答 2

1

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

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

python manage.py sqlall

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

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

于 2013-01-08T18:27:43.997 回答
0

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

于 2013-01-08T18:04:08.527 回答