0

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.

Tech
  • 734
  • 1
  • 6
  • 20

0 Answers0