I'm trying to save current user when a new record saved in Django. I tried some code but it seems I am missing somethings.
In my modes I've created a ForeignKey for User table and I'm using generic class based views. Tried to save current user with a save_model function but couldn't do it right.
Here my codes:
My models.py:
from django.utils import timezone
from django.conf import settings
class Backlinks(models.Model):
link = models.URLField(max_length=100,verbose_name="Link")
keyword = models.CharField(max_length=100,verbose_name="Anahtar Kelime")
created_date = models.DateTimeField(default=timezone.now,verbose_name="Eklenme Tarihi")
end_date = models.DateTimeField(default=timezone.now,verbose_name="Bitiş Tarihi")
description = models.TextField(null=True,blank=True,verbose_name="Ek Bilgi")
source = models.URLField(max_length=100,verbose_name="Kaynak")
author = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE,verbose_name="Kullanıcı",null=True,blank=True)
def __str__(self):
return self.link
class Meta:
verbose_name = 'Backlink'
verbose_name_plural = 'Backlinkler'
Here my views.py:
class LinkCreate(LoginRequiredMixin,CreateView):
model = Backlinks
form_class = YeniForm
success_url = "/"
login_url = "/hesap/login/"
def save_model(self, request, obj, form, change):
if getattr(obj, 'author', None) is None:
obj.author = request.user
obj.save()
When I've trying to save the form I'm getting this error:
IntegrityError at /ekle/
NOT NULL constraint failed: backlinks_backlinks.author_id
Thanks in advance.