Python / Django: Разумно ли использовать «Item» в качестве имени класса в Python (в данном случае в Django)? - PullRequest
1 голос
/ 27 января 2010

Я создаю это:

# models.py

class Item(models.Model):
    sku = models.CharField(max_length=20)

class Attribute(models.Model):
    item = models.ForeignKey(Item, related_name='items')

Это вызовет конфликт имен в Python? Как:

# views.py

some_object.items.create(sku='123abc')

# Is there a place / way that this could cause errors, like:
# AttributeError: Bound method 'items' has no attribute "create"
# Since items() on a dict-like object could be a method to return a list,
# and Django could add support for .items() on a queryset right?

Если это плохая идея, я могу сменить имя.

Ответы [ 4 ]

3 голосов
/ 27 января 2010

Это кажется немного общим, но не более, чем «Атрибут». Я бы дал ему префикс на основе приложения, если это возможно.

2 голосов
/ 27 января 2010

Модель - это не то же самое, что набор запросов, и ни одна из них не зарегистрирована как диктованная. Не должно быть никаких проблем с этим.

Если вы действительно обеспокоены, то сделайте как можно большую часть этого кода общедоступной и сделайте так, чтобы люди его использовали :) Если ничего другого, основная команда Django действительно старательно проверяет как можно больше кода «в диком» как они могут, прежде чем расширять документированные API-интерфейсы любым способом. Они действительно заботятся о том, чтобы не нарушать существующий код людей, насколько это возможно.

Если сделать его публичным не вариант, то хотя бы посмотрите списки рассылки, чтобы, когда кто-нибудь предложил: «Эй, давайте добавим метод .items в Model!», Вы можете, по крайней мере, включить « «сломаю мой код» в нужное время.

2 голосов
/ 27 января 2010

Это действительно не проблема. Если у вас есть какой-то случайный объект и вы чувствуете, что «items» - подходящее имя для метода, тогда продолжайте. Это не приведет к каким-либо конфликтам с именами, которые будут использоваться для других объектов.

Пока вы думаете, что имя метода не вводит в заблуждение и не вызывает путаницы, продолжайте.

1 голос
/ 27 января 2010

по умолчанию с item_set, без проблем:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...