Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 25, 2010 17:34:55

mv
От:
Зарегистрирован: 2010-02-16
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с ForeignKey

Доброго!


Из таблицы:

CharField
ForeignKey

при выборке данных получается {id: 2, id:1, val:value} т.е вместо значения по ForeignKey из другой таблицы указана ссылка на id. Как заставить это работать, что бы было значение а не id?



Офлайн

#2 Фев. 25, 2010 17:44:14

sairus
От:
Зарегистрирован: 2007-10-08
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с ForeignKey

Может часть модели выложите и какой запрос делаете?



Офлайн

#3 Фев. 26, 2010 12:23:22

mv
От:
Зарегистрирован: 2010-02-16
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с ForeignKey

sairus
Может часть модели выложите и какой запрос делаете?
модели:
class Status(models.Model):
status = models.CharField(max_length=30, verbose_name="User Status")

def __unicode__(self):
return "%s" % (self.status)

class Meta:
ordering = ["status"]

class User(models.Model):
name = models.CharField(max_length=30, verbose_name="User Names")
status = models.ForeignKey(Status)

def __unicode__(self):
return "%s" % (self.name)

class Meta:
ordering = ["name"]
выборка:
test = User.objects.filter('name').values()
test = str(test)



Офлайн

#4 Фев. 26, 2010 12:29:50

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

Проблема с ForeignKey

mv
Не делайте values() тогда получите объекты, а не словарь со значениями полей. В словаре всегда будут только значения ключей связных объектов.



Офлайн

#5 Фев. 26, 2010 19:24:20

mv
От:
Зарегистрирован: 2010-02-16
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с ForeignKey

Daevaorn
Не делайте values() тогда получите объекты, а не словарь со значениями полей. В словаре всегда будут только значения ключей связных объектов.
Я чего то не понимаю здесь. Когда я использую ForeignKey я имею ввиду получение данных из таблицы User заполненой через админку. Т.е ForeignKey в админке показывает выпадающий список со значениями из Status, и это относительно удобно, потому что не нужно каждый раз вбивать повторяющиеся значения для заполнения таблицы. Но при выборке, вместо значения подставленого из таблицы Status в таблицу User , там ссылки на номер строки в Status. Мне же нужно значение, и выборка происходит в коде а не в админке. Получается что ForeignKey только для админки?

На пример перейду:

таблица Статус:

админ
модер
юзер

таблица Юзер:

Вася админ
Вова админ
Женя юзер
Ваня модер

Вот мне нужно чтоб было при выборке ({ Вася:админ }, { Вова:админ }, { Женя:юзер }, { Ваня:модер }) а не ({ Ваня: строка_в_таблице_номер } … … )



Офлайн

#6 Фев. 26, 2010 20:30:27

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

Проблема с ForeignKey

mv
Я чего то не понимаю здесь. Когда я использую ForeignKey я имею ввиду получение данных из таблицы User заполненой через админку. Т.е ForeignKey в админке показывает выпадающий список со значениями из Status, и это относительно удобно, потому что не нужно каждый раз вбивать повторяющиеся значения для заполнения таблицы. Но при выборке, вместо значения подставленого из таблицы Status в таблицу User , там ссылки на номер строки в Status. Мне же нужно значение, и выборка происходит в коде а не в админке. Получается что ForeignKey только для админки?
Теперь я ничего не понимаю из того что вы тут написали:-)

Почему у вас ‘name’ как параметр filter() и зачем вы зовете values() в это запросе
User.objects.filter('name').values()
? Это просто не рабочий код.

Уберите ‘name’ и values() и вы получите объекты User. Итерируясь по ним вы можете у каждого получить status:
for user in User.objects.all():
user.status
values() можно тоже использовать, но тогда нужно явно указывать какие поля вам нужны, например так:
User.objects.all().values('name', 'status__status')



Офлайн

#7 Фев. 27, 2010 09:15:12

mv
От:
Зарегистрирован: 2010-02-16
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с ForeignKey

Daevaorn
? Это просто не рабочий код.
Да, это моя ошибка.
Daevaorn
User.objects.all().values('name', ‘status__status’)
Ваш способ работает как нужно. Спасибо, проблема решилась.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version