Я пытаюсь выяснить, как создать правильный набор запросов для получения
полей url и значений (модель Attr_1 и Attr_2)
из запроса Object1 моделирует «обратный набор» отношения «многие ко многим». Вот мой пример:
models.py:
class Text(models.Model):
string = models.TextField()
#Entity
class Element(models.Model):
pageline = models.IntegerField()
class Object1(Element):
text = models.ManyToManyField(Text)
class Object2(Element):
another_var = models.ManyToManyField(Text)
yet_another = models.CharField(max_length=1)
#Entity
class Attribute(models.Model):
belongsTo = models.ManyToManyField(Element)
class Attr_1(Attribute):
url = models.URLField()
class Attr_2(Attribute):
value = models.CharField(max_length=255)
date = models.URLField()
Если я использую:
>> models.Object1.objects.get(pk=1).attribute_set.all()
<QuerySet [<Attribute: Attribute object (1)>, <Attribute: Attribute object (2)>]>
>> models.Object1.objects.get(pk=1).attribute_set.values()
<QuerySet [{'id': 1}, {'id': 2}]>
Я думаю, теперь я должен запросить Attr_1 для pk = 1 иAttr_2 для pk = 2?
Имеет ли отношение модель атрибута, чтобы узнать, находится ли id = 1 в модели Attr_1 или Attr_2?
Любая помощь приветствуется. Спасибо!
РЕДАКТИРОВАТЬ:
Интересно, достижимо ли решение с использованием типов содержимого: Модель Django один внешний ключ для многих таблиц У меня естьчитать и понимать технику.
Мне кажется, что django-polymorphic удовлетворяет моим потребностям. Несмотря на то, что я не люблю использовать не встроенные библиотеки и хотел бы узнать решение путем сборки модулей. У меня нет никаких знаний по созданию эффективного набора запросов. Может быть, мое моделирование неверно?
Но с полиморфной моделью я могу запросить:
>> models.Object1.objects.get(pk=1).attribute_set.all()[0].url
'http://www.dot.com'
Мне просто нужно поймать тип объекта, чтобы он не сталкивался:
AttributeError: 'Attribute' object has no attribute 'url'
Надеюсь, что кто-то может помочь или объяснить тему дальше, даже если я нашел что-то, что работает для меня.