我研究了Django框架,有一个练习要求您创建一个简单的博客Web应用程序.这个应用程序有简单的模型和表格来处理理论上用户会保存在项目数据库中的数据.
以下是模型:
from django.db import models
class Blog(models.Model):
text = models.TextField()
date_added = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.text
class Post(models.Model):
blog = models.ForeignKey(Blog, on_delete=models.CASCADE)
text = models.TextField()
date_added = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.text
以下是表格:
from django import forms
from . models import Blog, Post
class BlogForm(forms.ModelForm):
class Meta:
model = Blog
fields = ['text']
labels = {'text': ''}
class PostForm(forms.ModelForm):
class Meta:
model = Post
fields = ['text']
labels = {'text': ''}
因此,假设我通过db添加了一个博客实例.我是这样做的:
INSERT INTO learning_logs_topic (id, text, date_added)
VALUES
(1, 'A blog #1', now()::timestamptz);
这些数据出现在Django管理站点和html模板上.这几乎是立刻发生的,这意味着Django实际上已经意识到数据库中添加了新的日期.但是,当我试图通过管理站点或通过保存html表单添加博客实例时,Django抛出并出错. 下面是我要添加的ID为21的博客实例:
INSERT INTO blogs_blog (id, text, date_added)
VALUES
(21, 'test21', now()::timestamptz);
我得到了这个错误: 在/ADD_NEW_BLOG/处出现集成错误
duplicate key value violates unique constraint "blogs_blog_pkey"
DETAIL: Key (id)=(21) already exists.
不知道这里发生了什么.Django从db获取数据并将其发送到浏览器,但在try 将数据写入db时,它不会"看到"ID.
我想我需要让Django 看到数据库里最新的身份证.