0

同様の質問に投稿された回答を調べましたが、自分の状況では何もうまくいかなかったので、質問を投稿します。私のやり方では、イベントを作成したユーザーの名を取得しようとすると、常に「なし」という結果が得られます...したがって、複数のユーザークラスがあり、1つのタイプのユーザーを許可したいイベントを作成したユーザーと、イベントに関連するクラスにある他のさまざまなフィールドを示すテンプレートを使用して、イベントをスケジュールできます。たとえば、次のようになります。

#models.py

class BaseProfile(models.Model):
    user = models.ForeignKey(User, unique=True)
    first_name = models.CharField(max_length=20, verbose_name=_('First Name'))
    last_name = models.CharField(max_length=20, verbose_name=_('Last Name'))
    ...
    #More common fields

#Used for when a new broadcaster registers; fields specific to broadcasters
classBroadcasterProfile(models.Model):
    user_type = models.CharField(max_length=20, default="broadcaster")
    ...
    #Other fields specific to broadcasters

#Used when a broadcaster creates a profile for themselves after they have registered
class BroadcasterAccountProfile(BroadcasterProfile):
    ...

#A broadcaster wants to schedule an event
class UpcomingEvents(models.Model):
    title = models.CharField(max_length=50, verbose_name=_('Title'))
    description = models.TextField(max_length=100, verbose_name=_('Event Description'))
    instructor = models.ForeignKey(BroadcasterAccountProfile, null=True, blank=True, related_name='instructor')
    event_date = models.DateField(auto_now=False, auto_now_add=False, verbose_name=_('Date of Event'))
    ...
    #Additional info to be included with the scheduling of event

したがって、ブロードキャスターが登録し、プロファイルを作成し、イベントをスケジュールした後 (すべて正常に機能します)、今後のスケジュールされたイベントを表示するために使用しようとしているビューは次のとおりです。

#views.py
def upcoming_event_list(request):
    today = datetime.date.today()
    tomorrow = datetime.date.today() + datetime.timedelta(days=1)
    todays_events = UpcomingEvents.objects.filter(event_date=today)
    tomorrows_events = UpcomingEvents.objects.filter(event_date=tomorrow)
    return render_to_response('events/preview.html', {'today': today, 'tomorrow': tomorrow,
    ...

イベントを作成したブロードキャスターに関連するものを除いて、今後のイベントに関連するものをテンプレートに表示させることができます。ビューに値を追加しようとしました:

def upcoming_event_list(request):
    ...
    values = UpcomingEvents.objects.values('instructor__first_name', 'instructor__last_name', 'instructor__avatar')

#template.html
{% for v in values %}
    Broadcaster Name:{{ v.instructor__first_name }}
{% endfor %}

これは、「ブロードキャスター名: なし」と表示されます。私は完全に間違った方向に向かっていますか、それともこれを機能させるために何ができますか? これが紛らわしかったら申し訳ありません。私はできるだけ明確にしようとしましたが、自分自身がどのように混乱しているかを見て、自分の問題を説明しようとしてどれだけ成功したかわかりません. 助けてくれてありがとう。何か明確にする必要がある場合はお知らせください。

4

1 に答える 1

0

テンプレートで試し{{ v.instructor.first_name }}ましたか?

(二重下線).の代わりに (終止符/ドット/ピリオド/なんでも) に注意してください。__

于 2012-09-13T19:18:23.907 に答える