Уведомления

Группа в Telegram: @pythonsu

#1 Июль 18, 2007 15:12:08

denz
От:
Зарегистрирован: 2007-01-09
Сообщения: 117
Репутация: +  0  -
Профиль   Отправить e-mail  

Возможности админки ...

Например есть связанные модели:

class CityType(models.Model):
type=models.CharField(maxlength=20)
typeDescr=models.CharField(maxlength=200)

def __str__(self):
return self.type

class Admin:
pass


class City(models.Model):
ru=models.CharField(maxlength=100)
en=models.CharField(maxlength=100)
short=models.CharField(maxlength=3)
type=models.ForeignKey(CityType)

def __str__(self):
return self.ru

class Admin:
list_display = ('ru', ‘en’, ‘short’, ‘type’)
Для того, чтобы внести в City строку, в соотв. с маном нужно сделать:

obj=City(ru=“Киев”,ua=“Київ”,en=“Kyiv”,short=“Kv”,type=CityType.objects.filter(type=“велике_село”))
obj.save()
Насколько я понимаю, джанговская админка именно эту строку и выполнит, после того, как получит от клиента запрос на добавление.

Внимание, вопрос:
Каким образом админка определяет, что из связанной таблицы должно быть выфильтровано именно поле type а не (например) typeDescr?
Есть подозрения, что для этого както анализируется метод __str__ соотв. модели

Заранее благодарен за варианты, идеи, предположения или пожелания RTFM.



Отредактировано (Июль 18, 2007 15:14:22)

Офлайн

#2 Июль 18, 2007 16:19:29

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

Возможности админки ...

denz
Да, lorien прав. В таблице City есть поле type_id, в которую и записывается ключ из таблицы CityType



Офлайн

#3 Июль 19, 2007 10:01:31

denz
От:
Зарегистрирован: 2007-01-09
Сообщения: 117
Репутация: +  0  -
Профиль   Отправить e-mail  

Возможности админки ...

lorien
Хм, а оно вообще работает? Ведь filter возвращает QuerySet, а не объект типа CityType. Думаю, джанговская админка написала бы там get, а не filter )
Извиняюсь. Я там написал:
obj=City(ru="Киев",ua="Київ",en="Kyiv",short="Kv",type=CityType.objects.filter(type="велике_село")[0])
obj.save()
(подводит привычка сначала кодировать, а потом читать рефы)
Получается, что возможные айдишники для связанного поля передаются клиенту, а потом клиент передает выбранный айдишник серверу. Теперь вижу по HTML коду.
А это секьюрно?



Офлайн

#4 Июль 19, 2007 10:45:45

denz
От:
Зарегистрирован: 2007-01-09
Сообщения: 117
Репутация: +  0  -
Профиль   Отправить e-mail  

Возможности админки ...

lorien
Если содержимое колонки primary key в таблице городов - это тайна, то, конечно, это не секурно ))
Вот в том то и вопрос - нужно ли держать содержимое этой колонки в тайне? В принципе это хорошая ниточка к реверс инжинирингу.



Офлайн

#5 Июль 19, 2007 11:25:09

denz
От:
Зарегистрирован: 2007-01-09
Сообщения: 117
Репутация: +  0  -
Профиль   Отправить e-mail  

Возможности админки ...

lorien
вызывается наряд из отдела “К”
К сожалению наряд из отдела “К” полным составом уйдет в reset после слов “primary key” %)
Не годится :)
Ладно я понял. Будем считать такой подход учебно секьюрным, а там посмотрим :)+



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version