default_related_name.py 1008 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. from django.db import models
  2. class Author(models.Model):
  3. first_name = models.CharField(max_length=128)
  4. last_name = models.CharField(max_length=128)
  5. class Editor(models.Model):
  6. name = models.CharField(max_length=128)
  7. bestselling_author = models.ForeignKey(Author)
  8. class Book(models.Model):
  9. title = models.CharField(max_length=128)
  10. authors = models.ManyToManyField(Author)
  11. editor = models.ForeignKey(Editor, related_name="edited_books")
  12. class Meta:
  13. default_related_name = "books"
  14. class Store(models.Model):
  15. name = models.CharField(max_length=128)
  16. address = models.CharField(max_length=128)
  17. class Meta:
  18. abstract = True
  19. default_related_name = "%(app_label)s_%(model_name)ss"
  20. class BookStore(Store):
  21. available_books = models.ManyToManyField(Book)
  22. class EditorStore(Store):
  23. editor = models.ForeignKey(Editor)
  24. available_books = models.ManyToManyField(Book)
  25. class Meta:
  26. default_related_name = "editor_stores"