Как добавить в экземпляр поле, которого нет в модели, но которое создано в форме Django? Django
У меня есть модель Книга:
class Book(core.BaseModel):
name = models.ForeignKey(
FishingGear, verbose_name="Name", on_delete=models.PROTECT,
related_name='name',
)
library = models.ForeignKey(
Library, models.PROTECT, related_name='library_places',
verbose_name='Library',
)
tag_number = models.PositiveIntegerField('Tag Number', validators=[
MinValueValidator(1),
MaxValueValidator(MAX_TAG_NUMBER),
])
В файле forms.py я создал новое поле :
class BookChangeStatusForm(core.ModelForm):
start_tag_number = forms.IntegerField(label='Start number', min_value=1)
В том же forms.py у меня есть метод, который берет старые данные и создает новую книгу! Но я хочу, чтобы без tag_number он создавал поле 'start_tag_number':
def save(self, commit=True):
# instance = super().save(commit=False)
instance = Book.objects.create(
name=self.instance.name,
library=self.instance.library,
tag_number=self.instance.**start_tag_number**,
)
return instance
class Meta:
model = Book
fields = ()
Но я получил ошибку:
Book object has no attribute 'start_tag_number'
Мой views.py
class BookTagView(core.UpdateView):
form_class = BookChangeStatusForm
template_name = 'book/book_tag.html'
success_url = reverse_lazy('book:book-list')
Я хочу взять в forms.py OLD экземпляр в UpdateView и создать новый экземпляр со старыми данными, но без 'tag_number' вставить 'start_tag_number'! Пожалуйста, помогите мне понять, где ошибка!
Метод сохранения вашей формы должен иметь вид
def save(self, commit=True):
instance = super().save(commit=False)
instance.tag_number = self.cleaned_data['start_tag_number']
if commit:
instance.save()
return instance