Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
德扬戈。用户标识null&;重复错误 Django 1.3 Python 2.7_Django - Fatal编程技术网

德扬戈。用户标识null&;重复错误 Django 1.3 Python 2.7

德扬戈。用户标识null&;重复错误 Django 1.3 Python 2.7,django,Django,在中,我开发了另一个。我甚至不知道从哪里开始,我很沮丧 我让我的应用程序显示在Django管理部分,当我点击“添加”时,它会显示表单。当我填写并提交时,会导致以下错误: 异常值:(1048,“列'user\u id'不能为空”) 看起来简单明了,但如果我将user_id添加到admin.py中,则会导致我刚刚修复的错误。如果我省略它并使用修复旧错误的代码,那么我会得到这个错误。以下是相关代码: admin.py(我注释掉了我正在使用的代码,因为这导致了前面的错误) 型号.py from djan

在中,我开发了另一个。我甚至不知道从哪里开始,我很沮丧

我让我的应用程序显示在Django管理部分,当我点击“添加”时,它会显示表单。当我填写并提交时,会导致以下错误:

异常值:(1048,“列'user\u id'不能为空”)

看起来简单明了,但如果我将user_id添加到admin.py中,则会导致我刚刚修复的错误。如果我省略它并使用修复旧错误的代码,那么我会得到这个错误。以下是相关代码:

admin.py(我注释掉了我正在使用的代码,因为这导致了前面的错误)

型号.py

from django.db import models
from django.contrib.auth.models import User

# Create your models here.

class Timeslip(models.Model):
   user=models.ManyToManyField(User)
   day = models.DateField()
   hours_as_sec = models.PositiveIntegerField()
   part_of_day = models.CharField(max_length=16,choices=PART_O_DAY)
   drove = models.BooleanField(default=False)
   gas_money = models.DecimalField(max_digits=5,decimal_places=2)
   notes = models.TextField()

class UserProfile(models.Model):
   user = models.ForeignKey(User)
   url = models.URLField("Website", blank=True)
   position = models.CharField(max_length=50, blank=True)

User.profile = property(lambda u: UserProfile.objects.get_or_create(user=u)[0])
如果我将Timeslip的user=,改为
外键(用户)
,而不是
ManyToManyField(用户)
,则错误变为:

Exception Value: (1062, "Duplicate entry '2' for key 'user_id'")
…我理解,但这正是我现在要做的--为每个用户创建多个时间间隔

我该怎么做?无论我做什么尝试,我总是会遇到荒谬的错误,而且很难找到关于这一点的文档,尽管这似乎是一个常见的基本问题

更新:

新问题。Django是缓存吗?我从模型中删除了一些内容并重置了所有内容,但它仍然显示旧的形式。如果它向我显示它缓存的东西-我如何刷新缓存

无论如何,这是我运行
manage.py sqlall timeslip

BEGIN;
CREATE TABLE `timeslip_timeslip` (
    `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
    `user_id` integer NOT NULL,
    `day` date NOT NULL,
    `hours_as_sec` integer UNSIGNED NOT NULL,
    `part_of_day` varchar(16) NOT NULL,
    `drove` bool NOT NULL,
    `gas_money` numeric(5, 2) NOT NULL,
    `notes` longtext NOT NULL
)
;
ALTER TABLE `timeslip_timeslip` ADD CONSTRAINT `user_id_refs_id_bb29929c` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`);
CREATE TABLE `timeslip_userprofile_user` (
    `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
    `userprofile_id` integer NOT NULL,
    `user_id` integer NOT NULL,
    UNIQUE (`userprofile_id`, `user_id`)
)
;
ALTER TABLE `timeslip_userprofile_user` ADD CONSTRAINT `user_id_refs_id_c73880a3` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`);
CREATE TABLE `timeslip_userprofile` (
     `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
     `url` varchar(200) NOT NULL,
     `company` varchar(50) NOT NULL
)
;
ALTER TABLE `timeslip_userprofile_user` ADD CONSTRAINT `userprofile_id_refs_id_d05b8c80` FOREIGN KEY (`userprofile_id`) REFERENCES `timeslip_userprofile` (`id`);
CREATE INDEX `timeslip_timeslip_fbfc09f1` ON `timeslip_timeslip` (`user_id`);
COMMIT;

嘿@Forrest,当你通过你的管理员添加时间间隔时,你是否正在选择要添加的用户?您的数据库中有多少用户,您将向Timeslip添加哪些用户?是的,表单会提供一个下拉列表来选择用户。现在我只有2个用户,用于测试目的。我已经使用表单为每个用户创建了一个timeslip条目。。。在那之后,它将不允许我为两个用户添加更多内容。不过,我希望能够为每个用户创建多个timeslip条目。我猜数据库中的
user\u id
字段(由Django模型中的
user
字段表示)具有
unique=true
设置,这导致了错误。您能否运行
manage.py sqlall[appname]
并发布相关表的结果?您还可以启动交互式数据库shell(通常只需
manage.py dbshell
并查看
appname\u timeslip
表吗?如果您不介意丢失数据库中的数据,您可能需要尝试
manage.py reset[appname]
以清除数据库并基于当前模型重新创建所有内容。@rolling stone…我在上面添加了
manage.py sqlall
的输出,我看到了其中的一个独特之处。这是我的问题吗?我如何将其设置为false?另外,我认为我可能有缓存问题?感谢您迄今为止的帮助。您是对的,这是cau的一行为您解答问题:
在“timeslip\u timeslip”(“user\u id”)上创建索引“timeslip\u timeslip\u fbfc09f1”;
它正在
用户id
上添加索引。请尝试在dbshell中运行以下命令,并告诉我是否有效:
在“timeslip\u timeslip”上删除索引“timeslip\u timeslip\u fbfc09f1”;
BEGIN;
CREATE TABLE `timeslip_timeslip` (
    `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
    `user_id` integer NOT NULL,
    `day` date NOT NULL,
    `hours_as_sec` integer UNSIGNED NOT NULL,
    `part_of_day` varchar(16) NOT NULL,
    `drove` bool NOT NULL,
    `gas_money` numeric(5, 2) NOT NULL,
    `notes` longtext NOT NULL
)
;
ALTER TABLE `timeslip_timeslip` ADD CONSTRAINT `user_id_refs_id_bb29929c` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`);
CREATE TABLE `timeslip_userprofile_user` (
    `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
    `userprofile_id` integer NOT NULL,
    `user_id` integer NOT NULL,
    UNIQUE (`userprofile_id`, `user_id`)
)
;
ALTER TABLE `timeslip_userprofile_user` ADD CONSTRAINT `user_id_refs_id_c73880a3` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`);
CREATE TABLE `timeslip_userprofile` (
     `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
     `url` varchar(200) NOT NULL,
     `company` varchar(50) NOT NULL
)
;
ALTER TABLE `timeslip_userprofile_user` ADD CONSTRAINT `userprofile_id_refs_id_d05b8c80` FOREIGN KEY (`userprofile_id`) REFERENCES `timeslip_userprofile` (`id`);
CREATE INDEX `timeslip_timeslip_fbfc09f1` ON `timeslip_timeslip` (`user_id`);
COMMIT;