Как в ForeignKey сделать дефолтный pk?
Хочу сделать чтобы поле book автоматически заполнялось pk книги, на которой пишется комментарий. Возможно ли это как-то сделать? Вот мои модели: models:
from django.db import models
from django.shortcuts import reverse
class Book(models.Model):
title = models.CharField('Название', max_length = 200)
author = models.CharField('Автор(ы)', max_length = 300)
date_create = models.DateField('Дата написания')
date_edit = models.DateField('Дата издания')
pages = models.PositiveIntegerField('Кол-во страниц')
age_limit = models.PositiveBigIntegerField('Возрастное ограницение')
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('book_detail', kwargs={'pk': self.pk})
class Comment(models.Model):
title = models.CharField('Заголовок', max_length=140)
book = models.ForeignKey(
Book,
on_delete=models.CASCADE,
related_name='books',
)
name = models.CharField('Имя', max_length=100, default='Аноним')
email = models.CharField('Электронная почта', default='Нет', max_length=200)
body = models.TextField('Комментарий')
created_date = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title
def __str__(self):
return self.title
class Meta:
verbose_name = 'Комментарий'
verbose_name_plural = 'Комментарии'
Вот одни из моих попыток сделать это:
Всегда выбирается 1 pk книги, независимо от той, на странице которой находится пользователь:
class Comment(models.Model): title = models.CharField('Заголовок', max_length=140) book = models.ForeignKey( Book, on_delete=models.CASCADE, default = Book.pk related_name='books', )
Сработало немного не так, как планировалось. Но результат тот же, что и в прошлом способе.
class Book(models.Model): -------- def get_book_pk(): return book.object.get(id=1) class Comment(models.Model): title = models.CharField('Заголовок', max_length=140) book = models.ForeignKey( Book, on_delete = models.CASCADE, default = Book.get_book_pk, related_name='books', )