Форум сайта python.su
Например есть связанные модели:
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)
Офлайн
denz
Да, lorien прав. В таблице City есть поле type_id, в которую и записывается ключ из таблицы CityType
Офлайн
lorienИзвиняюсь. Я там написал:
Хм, а оно вообще работает? Ведь filter возвращает QuerySet, а не объект типа CityType. Думаю, джанговская админка написала бы там get, а не filter )
obj=City(ru="Киев",ua="Київ",en="Kyiv",short="Kv",type=CityType.objects.filter(type="велике_село")[0])
obj.save()
Офлайн
lorienВот в том то и вопрос - нужно ли держать содержимое этой колонки в тайне? В принципе это хорошая ниточка к реверс инжинирингу.
Если содержимое колонки primary key в таблице городов - это тайна, то, конечно, это не секурно ))
Офлайн
lorienК сожалению наряд из отдела “К” полным составом уйдет в reset после слов “primary key” %)
вызывается наряд из отдела “К”
Офлайн