1

For example, I have two classes.

class Book(models.Model):
    title = models.CharField (...)    
    author = models.CharField (...)
    price = models.Integer(...)

class Order(models.Model)
    order_datetime = models.DateTimeField()
    order_book = models.ForeignKey(Book,....)

New Order object should be created automatically after each addition of a new Book object in the database. And order_book fielt should be autocomplited with correspending book object.

How can I make it?

Thanx for the help!

igorshi1
  • 11
  • 2
  • Possible duplicate of [Can Django automatically create a related one-to-one model?](http://stackoverflow.com/questions/1652550/can-django-automatically-create-a-related-one-to-one-model) – Ciro Santilli OurBigBook.com May 10 '16 at 21:32

1 Answers1

3

You can override the save method of Book:

class Book(models.Model):
    title = models.CharField (...)    
    author = models.CharField (...)
    price = models.Integer(...)

    def save(self, *args, **kwargs):
        is_new = True if not self.id else False
        super(Book, self).save(*args, **kwargs)
        if is_new:
            order = Order(order_book=self)
            order.save()

You can also add auto_now_add=True to order_datetime if it's supposed to be filled with insertion time:

order_datetime = models.DateTimeField(auto_now_add=True)
nima
  • 6,566
  • 4
  • 45
  • 57