models.py
class DailyRecordManager(models.Manager):
def get_query_set(self):
qs = super(DailyRecordManager, self).get_query_set().order_by('date_organised')
return qs
class DailyRecord(models.Model):
date_organised = models.DateField('Ogransied Date', help_text=('Enter Date when the program is organised: CCYY-MM-DD'))
program_name = models.TextField('program name',)
venue = models.CharField('venue', max_length = 255, blank=True)
organiser = models.ForeignKey(Organiser, verbose_name = 'Organiser', related_name = 'organisers')
objects = models.Manager()
public = DailyRecordManager()
class Meta:
verbose_name = 'dailyrecord'
verbose_name_plural = 'dailyrecords'
ordering = ['-date_organised']
def __str__(self):
return self.program_name
class Participant(models.Model):
participant = models.CharField(max_length= 50, unique = True)
daily_record = models.ForeignKey(DailyRecord, verbose_name = 'program_name')
class Meta:
verbose_name = 'participant'
verbose_name_plural = 'participants'
def __str__(self):
return self.participant
视图.py
class DailyActivityPageView(SingleTableView):
table_class = DailyRecordTable
queryset = DailyRecord.public.all()
# queryset = Participant(DailyRecord.public.all()) is not working
template_name = 'dailyrecord/daily-activity-record.html'
表.py
class DailyRecordTable(tables.Table):
date_organised = tables.Column('Date')
program_name = tables.Column( 'Program Name')
venue = tables.Column( 'Venue')
organiser = tables.Column( 'Organiser')
participant = tables.Column( 'dailyrecord.participant')
# daily = tables.RelatedLinkColumn()
class Meta:
model = DailyRecord
现在我需要的是也显示参与者表中的数据,对应的是daily_record外键。
点击这个链接查看快照,看到表的最后一列。我需要这里的Participant.partcipant列的数据。
对不起,英语不好。
謝謝你
这里有两个问题。
首先,一个每日记录可以有多个参与者。因此,为了填入最后一列,你必须将所有可能的参与者汇总到该列中(例如作为列表)。
第二个问题是,你应该让 Participant
溯及既往 DailyRecord
的属性 "related_name "添加到 daily_record
在你 Participant
模型,像这样。
daily_record = models.ForeignKey(DailyRecord, verbose_name = 'program_name', related_name="participants")
现在,你应该简单地从daily_record中获取参与者,就像这样。
participants = DailyRecord.public.first().participants.all()
如果你有 OneToOneField
而不是 ForeignKey
你可以像这样把(单个)参与者添加到表中。
participant = tables.Column( "Participant", accessor='participant')