0

My models Book and ReadList related and I can use them on Django Admin but I want to fetch bookPageCount field of selected object and save it to pageCount field of new object when save.

from django.db import models
from django.db.models.signals import post_save, pre_save
from django.dispatch import receiver

# Create your models here.

class Book(models.Model):
    bookname = models.CharField(max_length=200, verbose_name='Kitap Adı')
    bookAuthor = models.CharField(max_length=100, verbose_name='Yazar Adı')
    bookPublisher = models.CharField(max_length=100, verbose_name='Yayın Evi')
    bookPageCount = models.PositiveIntegerField(verbose_name='Sayfa Sayısı')
    bookAddDate = models.DateField(verbose_name='Kitaplığa Eklenme Tarihi')
    class Meta:
        verbose_name = 'Kitap'
        verbose_name_plural = 'Kitaplar'
    def __str__(self):
        return self.bookname

class ReadList(models.Model):
    bookName = models.ForeignKey('kitaplik.Book', related_name='book', on_delete=models.CASCADE, verbose_name='Kitap Adı')
    readerName = models.ForeignKey('ogrenciler.Students', on_delete=models.CASCADE, related_name='readerName', verbose_name='Okuyan Kişi')
    dateOfRead = models.DateField(verbose_name='Okuma Tarihi')
    pageCount = models.PositiveIntegerField(verbose_name='Sayfa Sayısı',blank=True, null=True)
    class Meta:
        verbose_name = 'Okuma Günlüğü'

@receiver(post_save, sender=ReadList)
def get_pageCount(sender, instance, **kwargs):
    instance.pageCount = instance.Book.bookPageCount
    instance.save

EDIT: Changes been made after Higor's reminder but I still have problem as the same. The error I get is 'ReadList' object has no attribute 'Book'

2 Answers2

1

I think you've mistaken some names.

@receiver(post_save, sender=ReadList)
def get_pageCount(sender, instance, **kwargs):
    instance.pageCount = instance.book.bookpageCount
    instance.save()
Higor Rossato
  • 1,996
  • 1
  • 10
  • 15
0

bookName is the field name

@receiver(post_save, sender=ReadList)
def get_pageCount(sender, instance, **kwargs):
    instance.pageCount = instance.bookName.bookPageCount
    instance.save()
shourav
  • 946
  • 9
  • 15
  • Yes this worked and led to another error. My new code; `instance.pageCount = instance.bookName.bookPageCount` And the new error is `maximum recursion depth exceeded in comparison` – Emre Gülas Apr 26 '19 at 15:36
  • you can follow this comment. https://stackoverflow.com/a/28369908/1811771 – shourav Apr 26 '19 at 15:50