Guest User

Untitled

a guest
Feb 19th, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.65 KB | None | 0 0
  1. class Page(models.Model):
  2. name = models.CharField('Имя страницы', max_length=50)
  3. slug = models.SlugField()
  4.  
  5. class Meta:
  6. verbose_name = 'Page'
  7. verbose_name_plural = 'Pages'
  8.  
  9. def __str__(self):
  10. return self.name
  11.  
  12.  
  13. class Article(models.Model):
  14. name = models.CharField('Имя статьи', max_length=50)
  15. slug = models.SlugField()
  16.  
  17. class Meta:
  18. verbose_name = 'Article'
  19. verbose_name_plural = 'Articles'
  20.  
  21. def __str__(self):
  22. return self.name
  23.  
  24.  
  25. class Menu(models.Model):
  26. name = models.CharField('Имя меню', max_length=50)
  27.  
  28. class Meta:
  29. verbose_name = 'Menu'
  30. verbose_name_plural = 'Menus'
  31.  
  32. def __str__(self):
  33. return self.name
  34.  
  35.  
  36. class MenuItem(models.Model):
  37. name = models.CharField('Имя пункта меню', max_length=50)
  38. url = models.URLField('Ссылка пункта меню', max_length=200)
  39. menu = models.ForeignKey(Menu, on_delete=models.CASCADE)
  40.  
  41.  
  42. content_type = models.ForeignKey(
  43. ContentType, limit_choices_to={
  44. 'model__in': (
  45. 'page',
  46. 'article',)
  47. }, on_delete=models.CASCADE)
  48.  
  49. object_id = models.PositiveIntegerField()
  50. obj = GenericForeignKey('content_type', 'object_id')
  51.  
  52. class Meta:
  53. verbose_name = 'MenuItem'
  54. verbose_name_plural = 'MenuItems'
  55.  
  56. def __str__(self):
  57. return self.name
  58.  
  59. class MenuItemObjectAdminInLine(admin.StackedInline):
  60. model = MenuItem
  61. ct_field = "content_type"
  62. ct_fk_field = "object_id"
  63. extra = 0
  64.  
  65. class MenuAdmin(admin.ModelAdmin):
  66. inlines = [MenuItemObjectAdminInLine]
  67.  
  68. admin.site.register(Menu, MenuAdmin)
Add Comment
Please, Sign In to add comment