我尝试了我能找到的所有失败的解决方案。
我删除了迁移文件并运行了makemigrations / migrate
我有__init__.py
的迁移文件
但它们都不起作用......
我真的不知道出了什么问题。
我的猜测是数据库中的某些内容搞砸了,但是我已经删除并恢复它并且出现了同样的错误。
完整错误消息是:/ add_post /
处的IntegrityErrorNOT NULL约束失败:main_post.url
这是我的代码,任何帮助都是超级appreicated。
Models.py
class Post(models.Model):
category = models.ForeignKey(Category)
pub_date = models.DateTimeField(auto_now_add = True)
title = models.CharField(max_length = 100)
content = FroalaField()
url = models.URLField(max_length=250, blank=True, null=True)
moderator = models.ForeignKey(User, blank=True, null=True)
rank_score = models.FloatField(default= 1)
views = models.IntegerField(default=0)
image = models.ImageField(upload_to="images",blank=True, null=True)
slug = models.CharField(max_length=100, unique=True)
objects = models.Manager() # default manager
@property
def domain(self):
return urlparse(self.url).netloc
@property
def url(self):
if self.link:
return self.link
return current_request().build_absolute_uri(self.get_absolute_url())
def save(self, *args, **kwargs):
self.slug = uuslug(self.title, instance=self, max_length=100)
super(Post, self).save(*args, **kwargs)
def __unicode__(self):
return self.title
# for redirecting URL so slug is always shown
def get_absolute_url(self):
return '/%s/%s' % (self.id, self.slug)
forms.py
class PostForm(forms.ModelForm):
title = forms.CharField(max_length=128, help_text="plz enter")
url = forms.URLField(max_length=200,
help_text="Please enter the URL of the page.")
class Meta:
model = Post
fields = ['title', 'content', 'views', 'category', 'url']
我有标题,内容,观点字段但是不要在这里写它们。
我的views.py非常确定没有错,但以防万一
class PostCreateView(CreateView):
model = Post
form_class = PostForm
template_name = 'main/add_post.html'
def form_valid(self, form):
self.object = form.save(commit=False)
# any manual settings go here
self.object.save()
return HttpResponseRedirect(reverse('post', args=[self.object.slug]))
@method_decorator(login_required)
def dispatch(self, request, *args, **kwargs):
return super(PostCreateView, self).dispatch(request, *args, **kwargs)
这是我的主持人
moderator = models.ForeignKey(User)
什么是这个NOT NULL约束失败:main_post.moderator_id ...什么不是空约束意味着/
答案 0 :(得分:0)
如果您要将form_valid
设置为登录用户,则可以执行此操作,即查看def form_valid(self, form):
self.object = form.save(commit=False)
self.object.moderator = self.request.user
self.object.save()
return HttpResponseRedirect(reverse('post', args=[self.object.slug]))
方法。
null=True
完成此操作后,moderator
字段将不再需要{{1}}。