0

Eventクラスがあります。イベントにはpresenters. 「presenters出席者」リストに配置されます。プレゼンターは、出席者のリストで実際にプレゼンターであることを示すフラグを持っているはずです。例: アバターの横にあるチェックマーク{% if is_presenter %}。現在、すべての出席者にチェックマークが追加されています。

フラグを表示したいpresentersだけです。私は何を間違っていますか?発表者のみに表示するチェックマークを追加するにはどうすればよいですか? (また、この状況で私の肩書が正しかったかどうかもわかりません。お知らせください)。

モデル:

class Event(models.Model):
    title = models.CharField(max_length=200)
    presenters = models.ManyToManyField(Profile, null=True, blank=True)
    url = models.CharField(max_length=200)
    description = models.TextField()
    date = models.DateTimeField()
    created = models.DateTimeField(auto_now_add=True)
    modified = models.DateTimeField(auto_now=True)
    tags = models.ManyToManyField(Tag, null=True, blank=True)

class Attendee(models.Model):
    event = models.ForeignKey(Event)
    content_type = models.ForeignKey(ContentType)
    object_id = models.PositiveIntegerField()
    profile = generic.GenericForeignKey('content_type', 'object_id')

ビュー:

def event(request, id):
    event = get_object_or_404(Event, id=id)
    is_attending = False
    is_presenter = False
    if request.user.is_authenticated():
            profile = Profile.objects.get(user=request.user)
        attendees = [a.profile for a in Attendee.objects.filter(event=event)]
        if profile in attendees:
            is_attending = True        
    for presenter in event.presenters.all():
        is_attending = True
        try:
            content_type = ContentType.objects.get(app_label='profiles', model='profile')
            Attendee.objects.get(event=event, content_type=content_type, object_id=presenter.id)
            is_presenter = True
        except Attendee.DoesNotExist:
            Attendee(event=event, profile=presenter).save()

テンプレート:

{% for attendee in event.attendees %}
     <div class="inline-block">   
        <a href="/profile/{{ attendee.profile.get_type|lower}}/{{ attendee.profile.user.username }}"{% if attendee.profile.is_presenter %}title="Presenter" class="tooltip-below"{% endif %}>
        <img width=30 height=30 src="{% if attendee.profile.avatar %}{% thumbnail attendee.profile.avatar 30x30 crop %}{% else %}{{ DEFAULT_AVATAR }}{% endif %}" />
        </a>
        {% if is_presenter %}
            <i class="icon-ok-sign"></i>
        {% endif %}
    </div>
{% endfor %}
4

1 に答える 1

0

私はあなたの質問を正しく理解していません。しかし、問題は、is_presenterフラグがオブジェクトのプロパティではないことです。Python ではプロパティを動的に作成できるため、おそらく解決策は、このブール変数を次のようにモデルに設定することです。

    ...
    if profile in attendees:
        profile.is_attending = True  
for presenter in event.presenters.all():
    presenter.is_attending = True

テンプレート内:

    {% if profile.is_presenter %}

* 洗練された解決策は、Profile モデルをis_presenter()メソッドで拡張することです.*

于 2012-07-11T20:46:27.867 に答える