Столкновение названия ресурса Tastypie - PullRequest
1 голос
/ 07 марта 2012

Я в настоящее время использую вкусный пирог с 2 приложениями.Каждое из этих приложений имеет модель под названием Group.Они работают очень по-разному, и единственное сходство - это имя «Группа».

Когда в файл URL добавляется только одно или другое приложение, оно работает как шарм.Однако, как только я добавляю оба приложения, возникает конфликт имен, и метод get_resource_uri () возвращает неверную строку.Вот какой-то код:

urls.py

from myapp1.resources import GroupResource as gr_a
from myapp2.resources import GroupResource as gr_b

myapp1_api = Api(api_name='1.0')
myapp1_api.register(gr_a())

myapp2_api = Api(api_name='1.0')
myapp2_api.register(gr_b())

в строке 37 текущего файла api.py в репозитории tastypie. Я вижу этот код:

if resource_name is None:
    raise ImproperlyConfigured("Resource %r must define a 'resource_name'." % resource)

 self._registry[resource_name] = resource

Поскольку оба ресурса моей группы имеют имя_ресурса «группа», они регистрируются друг на друге, даже если они зарегистрированы по отдельным URL-адресам.Помимо изменения фактического имени ресурса, есть ли способ обойти это имя?

Обновление Uris будет выглядеть примерно так:

/myapp1/1.0/group/
/myapp2/1.0/group/

В идеале я нене хочу, чтобы myapp1 и myapp2 знали друг о друге (т.е. класс группы различен).Обходной путь для этого состоит в том, чтобы изменить myapp2.Group на myapp2.MyGroup (чтобы избежать конфликта имен), но на самом деле это не так уж и элегантно.

1 Ответ

0 голосов
/ 21 июня 2012

Во всех моих ресурсах у меня было пустое имя_ресурса, так как я был доволен именем по умолчанию.Также я хотел получить URL-адрес, такой как /myapp/1.0/group/, а не /myapp/1.0/myapp/group/

Что я сейчас сделал, так это изменил все атрибуты resource_name на форму "myapp / group"и связал их всех с пустым URL.Это дало мне хороший пример: /1.0/myapp/group/, убедившись, что в ресурсах нет столкновений имен.

...