В исправление одной ошибки , я разработал другую.Я даже не уверен, с чего начать, я так расстроен.
Я получил свое приложение, чтобы оно появилось в разделе администратора Django, и когда я нажимаю «добавить», оно вызывает форму.Когда я заполняю и отправляю, это приводит к этой ошибке:
Значение исключения: (1048, «Столбец 'user_id' не может быть нулевым")
Кажется простым и понятным, но еслиЯ добавляю user_id в мой admin.py, и это приводит к ошибке, которую я только что исправил.Если я оставлю это и использую код, который исправляет старую ошибку, то я получаю эту ошибку.Вот соответствующий код:
admin.py (я закомментировал код, который использовал, так как это вызвало предыдущую ошибку)
from timeslip.models import Timeslip
from django.contrib import admin
class TimeslipAdmin(admin.ModelAdmin):
pass
#fields = ['user_id','day','hours_as_sec','part_of_day','drove','gas_money','notes']
admin.site.register(Timeslip, TimeslipAdmin)
модели.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 =, в ForeignKey(User)
вместо ManyToManyField(User)
, ошибка станет:
Exception Value: (1062, "Duplicate entry '2' for key 'user_id'")
... которыйЯ понимаю, но это именно то, что я сейчас пытаюсь сделать здесь - сделать несколько таймлипсов для каждого пользователя.
Как мне это сделать?Я продолжаю получать смешные ошибки, независимо от того, что я пытаюсь, и трудно найти документацию по этому вопросу, даже если кажется, что это было бы обычным делом.
Обновление:
Новый вопрос.Джанго кеширует вещи?Я удалил кое-что из модели и сбросил все, но это все еще показывает старую форму.Если он показывает мне что-то, что он кэшировал - Как мне очистить этот кеш?
В любом случае, вот вывод, когда я запускаю 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;