Найти - Пользователи
Полная версия: Проблема с ForeignKey
Начало » Django » Проблема с ForeignKey
1
mv
Доброго!


Из таблицы:

CharField
ForeignKey

при выборке данных получается {id: 2, id:1, val:value} т.е вместо значения по ForeignKey из другой таблицы указана ссылка на id. Как заставить это работать, что бы было значение а не id?
sairus
Может часть модели выложите и какой запрос делаете?
mv
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)
Александр Кошелев
mv
Не делайте values() тогда получите объекты, а не словарь со значениями полей. В словаре всегда будут только значения ключей связных объектов.
mv
Daevaorn
Не делайте values() тогда получите объекты, а не словарь со значениями полей. В словаре всегда будут только значения ключей связных объектов.
Я чего то не понимаю здесь. Когда я использую ForeignKey я имею ввиду получение данных из таблицы User заполненой через админку. Т.е ForeignKey в админке показывает выпадающий список со значениями из Status, и это относительно удобно, потому что не нужно каждый раз вбивать повторяющиеся значения для заполнения таблицы. Но при выборке, вместо значения подставленого из таблицы Status в таблицу User , там ссылки на номер строки в Status. Мне же нужно значение, и выборка происходит в коде а не в админке. Получается что 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')
mv
Daevaorn
? Это просто не рабочий код.
Да, это моя ошибка.
Daevaorn
User.objects.all().values('name', ‘status__status’)
Ваш способ работает как нужно. Спасибо, проблема решилась.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB