Наборы обратных ключей для представления модели - PullRequest
0 голосов
/ 24 мая 2011

со следующей настройкой модели:

class Cat(models.Model):
    claw = models.CharField(max_length=20)
    name = models.CharField(max_length=20)

class Fur(models.Model):
    type = models.CharField(max_length=20)
    cat = models.ForeignKey(Cat)

    class Meta:
        db_table=u'cat_view'
        managed=False

example

Мех имеет внешний ключ для кат. CatView - это представление Cat, управляемое вручную. Есть ли способ использовать полезные методы обратного набора django с этой настройкой?

Кроме того, я мог бы просто использовать Fur.objects.filter (cat_id = cat_view.id, ...), который был бы такой же функциональностью, как cat_view.fur_set.filter (...), однако я не мог выполнять обратный поиск например, CatView.objects.filter (fur__type = "shaggy").

EDIT: Добавлен пример файла моделей, изменено изображение для ясности, добавлена ​​незначительная сложность вопроса.

1 Ответ

1 голос
/ 24 мая 2011

Во-первых, ни один из этих вызовов ORM не будет работать: fur_set является атрибутом экземпляра cat, а не Cat.objects Manager.

Во-вторых, у Django вообще нет особой поддержки представлений базы данных , поэтому ваш вопрос об использовании этой конкретной функциональности с представлением немного странен. Вы могли бы определять CatView как отдельную (неуправляемую) модель, хотя вам нужно быть осторожным при обновлении и сохранении. Тогда вы можете получить тот же эффект, что и обратное отношение, напрямую запросив объект Fur:

Fur.objects.filter(cat=my_cat_view.id)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...