Как я могу создать поиск в Django? - PullRequest
0 голосов
/ 23 декабря 2008

У меня есть модель вопроса и форма, одно из полей этой модели: userid = ForeignKey (пользователь) , это прекрасно работает на модели вопроса, я могу выбрать пользователя из списка вниз.

Но довольно сложно, когда я хочу перечислить вопрос из модели, который является лучшим способом поиска имени пользователя из таблицы Users? потому что на данный момент у меня не может быть выпадающего списка!

Я хочу иметь простую вещь, например,

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

Ответы [ 2 ]

5 голосов
/ 23 декабря 2008

Название вашего поля (userid вместо user) заставляет меня думать, что вы можете быть озадачены поведением ForeignKey.

Джанго.

Если вы определите модель следующим образом:

from django.contrib.auth.models import User
from django.db import models

class Question(models.Model):
    user = models.ForeignKey(User)
    title = models.CharField(max_length=100)
    ...

    def __unicode__(self):
        return self.title

А затем создать экземпляр Question как question:

>>> question.user # the `User` instance
<User: username>

>>> question.user_id # the user's primary key
1

Похоже, вы ожидаете, что question.userid будет первичным ключом пользователя, а не тем, чем он является на самом деле: самим экземпляром User. Когда вы обращаетесь к question.userid, выполняется поиск в базе данных, но Django автоматически делает это, используя значение question.userid_id. Я бы переименовал поле userid в user, чтобы избежать путаницы.

С учетом этого, я думаю, что вы пытаетесь сделать, это перечислить вопросы вместе с их ассоциированными пользователями. Если это так, сделайте что-то подобное в своем шаблоне:

<ol>
{% for question in questions %}
    <li>{{ question }} asked by: {{ question.user }}</li>
{% endfor %}
</ol>
0 голосов
/ 23 декабря 2008

Я нахожу ваш вопрос неопределенным. Если вы хотите получить все Question экземпляры, которые связаны с конкретным User экземпляром с user_name, вы можете сделать так:

questions = Question.objects.filter( userid__username='user_name' )

Если у вас уже есть экземпляр User (хранится, скажем, в переменной с именем user) и вы хотите получить все Question объекты, связанные с ним, вы можете получить их с помощью:

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