Как получить определенное значение поля объекта связанных моделей и сохранить его в другом? - PullRequest
0 голосов
/ 26 апреля 2019

Мои модели Book и ReadList связаны, и я могу использовать их в Django Admin, но я хочу получить bookPageCount поле выбранного объект и сохранить его в pageCount поле нового объекта при сохранении.

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

РЕДАКТИРОВАТЬ : Изменения были сделаны после напоминания Хигора, но у меня все еще есть проблема, такая же. Я получаю ошибку 'ReadList' object has no attribute 'Book'

Ответы [ 2 ]

1 голос
/ 26 апреля 2019

Я думаю, вы ошиблись некоторыми именами.

@receiver(post_save, sender=ReadList)
def get_pageCount(sender, instance, **kwargs):
    instance.pageCount = instance.book.bookpageCount
    instance.save()
0 голосов
/ 26 апреля 2019

bookName - это имя поля

@receiver(post_save, sender=ReadList)
def get_pageCount(sender, instance, **kwargs):
    instance.pageCount = instance.bookName.bookPageCount
    instance.save()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...