同様の質問に投稿された回答を調べましたが、自分の状況では何もうまくいかなかったので、質問を投稿します。私のやり方では、イベントを作成したユーザーの名を取得しようとすると、常に「なし」という結果が得られます...したがって、複数のユーザークラスがあり、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 %}
これは、「ブロードキャスター名: なし」と表示されます。私は完全に間違った方向に向かっていますか、それともこれを機能させるために何ができますか? これが紛らわしかったら申し訳ありません。私はできるだけ明確にしようとしましたが、自分自身がどのように混乱しているかを見て、自分の問題を説明しようとしてどれだけ成功したかわかりません. 助けてくれてありがとう。何か明確にする必要がある場合はお知らせください。