16.06.2009 18:20

  1. multilinux

    0 ↑
    0 ↓
    Добрый день(утро, вечер, ночь), господа.
    Идея в базовом классе иметь какие-то универсальные поля.

    class A(models.Model):
       user_submitted = ForeignKey(User, related_name="%(class)s_related")
       class Meta:
         Abstract=True
       
    class B(A):
       что-то там
       class Meta:
         Abstract=True
    
    class C(B):
       тоже всякие поля, реальная модель.


    В чистом Питоне
    С.User_submitted - ноу проблем.
    Но вот в Джанге syncdb начинает ругаться и хотеть related_name(хотя по логике оно указано).
    Multi-table inheritance прочел, и честно говоря не понял ,
    можно ли в таком наследовании использовать related_name в родительском абстрактном классе?
    Или придется B не делать абстрактным классом без вариантов?
  2. multilinux

    0 ↑
    0 ↓
    Может путано обьяснил,
    В общем можно ли наследовать грамотно Abstract-Abstract-Реальный класс, при том вынеся общие поля в класс самого верхнего уровня.

  3. multilinux

    0 ↑
    0 ↓
    В доке
    Of course, you can make an abstract base class that inherits from another abstract base class.
    Но как related вынести в A?
  4. multilinux

    0 ↑
    0 ↓
    http://stackoverflow.com/questions/929029/how-do-i-access-the-child-classes-of-an-object-in-django-without-knowing-the-name
    Вот тут такая же проблема насколько я понял.
    Может кто-нибудь пояснит как все-таки грамотно делать.
  5. multilinux

    0 ↑
    0 ↓
    http://haineault.com/blog/101/
    Вот тут все ясно и понятно. Но у него 2 класса а не 3.

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.